Skip to main content

Full text of "Brainfilling Curves - a Fractal Bestiary"

See other formats


Brain-Filling Curves a Fractal Bestiary 

Jeffrey Ventrella 




Ventrella, Jeffrey, J. 

Brain-filling Curves - A Fractal Bestiary 

Second edition 

Book web site: www . f r actalcurves . com 

ISBN 978-0-9830546-2-7 

Copyright © 2012 by Jeffrey Ventrella 

Distributed by Lulu.com 

Cover Design by Jeffrey Ventrella 



Eyebrain Books 

www.eyebrainbooks.com 





Contents 



Acknowledgements 5 

1 Horror Vacui 6 

2 A Very Patient Turtle Who Draws Lines 16 

3 A Taxonomy of Fractology 27 

4 Gallery of Specimens (in order of family type) 47 

V2 52 

V3 53 

a/4 Square Grid 60 

V4 Triangle Grid 74 

V5 84 

V7 91 

V8 112 

V9 Square Grid 126 

V9 Triangle Grid 131 

V10 159 

/12 162 

a/13 Square Grid 168 

V13 Triangle Grid 171 

V16 Square Grid 174 

a/1 6 Triangle Grid 177 

V17 and Beyond 184 

My Brain Fillith Over 202 

References 203 




BeS-tl-cir-y noun (plural bestiaries) Pronunciation: / 'bsstiari/ 

A descriptive or anecdotal treatise on various real or mythical kinds of animals, esp. a medieval work with a moralizing 

tone. - Oxford Dictionary 
4 



Acknowledgements 



I want to thank Kirk Israel for reviewing the book and making several keen suggestions. Thanks also to Mirja Holmboe, 
Gary Walker, Beth O'Sullivan, Richard Montgomery, Portico Bowman, Hiroki Sayama, Eddie Elliot, Karl Stiefvater, Camp 
Wilson, Claudia L'Amoreaux, and Scott Kim. Thanks to Scott Bowling, brother Philip, and Wayne Bollinger for great fun 
and programming tips at the very start of this fractal journey. Thanks to professor Ed Zajec, who helped provide an 
intellectual foundation for making fractal art. Finally, I want to thank Nuala Creed for love and patience with my many 
obsessions, fractal and otherwise. 




orror Vacui 



Earth is filled with fractals: shapes and structures that have many levels of detail. Some of these are self-similar: they look 
the same at multiple scales of magnification. Examples include river basins, which have branch-points on many scales. 

Other examples of branching shapes can be 
found in living organisms: trees, bloodstreams, and 
bronchial tubes. All of these organic structures 
demonstrate a need to cover as much space as possible, 
to maximize tissue surface contact with air or light. s$*$^^^ 

Branching forms are wonderful and beautiful, but this 
book is not strictly about branching forms; it is about 
very long curly or kinky lines that fill-up areas of a 2D 
plane. Much like river basins, these long curly lines 
fully cover an area; they twist and turn so that they can 
fill-in every corner of space. Interestingly enough: in 
covering space so thoroughly, these curves acquire 
branching profiles - of a huge variety, as you will see. 

There is a concept in visual art known as: horror vacui: "fear of empty space", illustrated by many art styles 
throughout history. The specimens in this book have a major case of horror vacui: they are truly haters of empty space! A 
similar concept is found in physics: the notion that "nature abhors a vacuum." Fractal curves are very rich in 
metaphorical power - providing models for art, physics, music, and biology. They even evoke philosophical concepts, 
such as how the paths of our lives are repetitive, and filled with theme and variation - at every time scale. 




Our Mascot 

How could I not mention brain coral in a book called, "Brain-filling Curves' 7 ? Well, I will mention it now! This curious 
undersea creature - a coral of the family Faviidae - is covered with wonderful curly mazes. Hats off to this inspiring 
creature. 




Certain animals - especially really long skinny ones - sometimes find the need to coil themselves up to take up a compact 
space. We humans also happen to have about seven meters of intestine packed tightly into our abdomens: that's quite a 
spacefiller! 

Any time you have a long flexible linear object, and a desire to have that object take up a small space, you enter 
into a special realm of geometrical problem-solving - a realm that involves twisting, turning, bending, folding, and 
wrapping. 








? ' 




This geometric realm is also invoked for the purpose of creating convoluted paths to follow, like a maze or a labyrinth. 







j ^^^^^V Convoluted paths are also created when animals forage, or seek out things in 

M ^^ "V the environment. Let's do a visual thought experiment: imagine that you are 

I J C a squirrel, scurrying around on the ground under a tree. Your mate is up in 

^^ * M the tree, and she asks you to collect as many acorns as you can, and bring 

^^^^^^C^ them up to her. . .in a hurry. 

O You think to yourself, "well, I could go straight to the tree and 

^p*. y collect all the acorns in my path. That would get me to my mate quickly, but 

^^ I may not collect many acorns/ 7 This is illustrated on the next page in panel 

W (b). Just as you feared, when you arrive, your mate complains: "only five 

acorns?" You confess that there were only five acorns in your immediate 

path, and you grabbed them all up. The next day your mate asks you again 

to come back home to the tree and to bring back as many acorns as you can. This time you decide to take a few diversions 

on your way to the tree (one diversion to the left, and one diversion to the right). These diversions yield four more acorns, 

as illustrated in panel (d). 

If you feel that you have a little more time on your hands (or rather, your paws), you might decide to make 
smaller diversions inside of your diversions - to grab up even more acorns. This is illustrated at the bottom of the page. 
These smaller diversions have the same shape as the bigger ones, but they are on a smaller scale. 

The result of this visual thought experiment is a two-level fractal curve - a curve that may look familiar to some 
of you: it is the boundary of the quadric Koch Island [15]. The visual diagram that the squirrel conjured up in panel (c.) is 
the "generator" for this fractal curve. The concept of generators will be explained in the next chapter. 




« * « * • 

fc « e e i 



% * * # e 

* € * * * 





# 
* 






The diagram at left shows how the paths that make up the squirrel's 
left-right diversions each have their own miniature left-right 
diversions. 



Now, you may ask: why doesn't our 
make-believe squirrel just scan the whole field of ^ — 
acorns one row at a time? Well, that's a valid 



Z> 



way to collect a field full of acorns, but it's (^ 
boring! (Our squirrel has a fractal mind.) 



Z> 



How many ways can you draw a curly line? 




Infinite Strings 

Imagine taking a piece of string, and coiling it up so that it takes 
up a small space. The picture at the right shows a string with 
black dots drawn at the endpoints. As we move these dots closer 
to each other, we allow the string to curl up. 

Imagine that our task is to make sure the string never 
touches itself or crosses over itself, even as we push the 
endpoints closer and closer to each other. Eventually of course, 
the string will get packed so tightly that it will have to touch 
itself. But that's only because physical strings have thickness. 

This book is not about mortal pieces of string that reside 
in our physical world. It is about Platonic pieces of string. A 
perfect geometrical curve is infinitely thin, and so it can keep 
coiling up as the ends get closer together - essentially 
forever. . .and it will never touch itself. 

But that's no fun. After all, the end result of this process 
would be a blob of string so small that it would basically be a 
point. And it is well established in science that infinitely small 
things like points are extremely difficult to see. 





♦ 



10 




So instead let's imagine that we keep the endpoints the same distance from each other, and that 
the string gets longer and longer, adding more and more bays and peninsulas to fill up space. 
This is illustrated below. I use the term "fractalize" to describe this process. It turns out that there 
are many ways that a curve can be fractalized as it gets longer. And we can capture some of these 
ways in simple, elegant geometrical processes. 

The art of discovering these processes, and the categorization of these curves, is the 
subject of this book. 







11 



The drawing below shows one of the many fractal curves I have discovered. The two ends of the line are shown with 
black dots, visible at the lower left and lower right. Because of the particular scheme this fractal curve uses to fill space, 
there are unique self-similar patterns distributed throughout. The explanation for this phenomenon is explained later, as 
well as the genetic code used to generate this particular specimen. 




12 



Filling-in the Gaps 

A fractal curve that doesn't cross itself can be described as the boundary between two highly-intertwined domains. Like 
sea and land, or like lungs and air, these boundaries can be highly convoluted. Let's take the fractal curve from the 
previous page, and fill it up with light-blue water, to see what happens. . . 




The curly lines have receded to the background and what we see instead are two domains: one white, and one light blue. 
If this were a map of canals in a seaside village, you would use this to determine a route to paddle your gondola from one 
part of the village to another. As a general rule, I prefer to let the beauty of the curve itself shine through, but in many 
cases, the shapes between the curves are just as interesting. You will see that I use this colorizing technique for many of 
the fractal images in this book. 

13 



Filling Your Brain 



The evolution of brain folds is roughly correlated with advances in animal intelligence. Here are three brains for your 
viewing pleasure: from left to right: rat, monkey, and human (these images have been scaled relative to each other). 




I would like this book to cause a few more folds to grow in your brain. And I would like that growth to be joyful. Curves 
that completely fill up a region of a plane are called "plane-filling curves' 7 . They are familiar to fractal-lovers: 
mathematicians, geometers, and artists of the Escher ilk. For many of us, the reason we love these curves is not because 
they answer questions like how to pack leftover spaghetti into a jar, or how to build a maze for your pet rat. The reason is 
because we find them beautiful - visually and intellectually. 



V 





Although these kinds of curves have been created in the past, they were generally considered as mathematical curiosities, 
or worse, "monsters' 7 until, in the 1970 , s, Benoit Mandelbrot coined the term "fractal" and brought together many of these 
beasts under one umbrella; as a unified mathematical discipline. In his book, The Fractal Geometry of Nature [14], 
Mandelbrot referred to plane-filling curves as "Peano Curves", in reference to Guiseppe Peano, an Italian mathematician 
who described such curves in the 1890 , s [18]. Mandelbrot's book is the foundation for many of the concepts and terms I 
use in this book. But I shall extend these ideas and terms, and put them in a new context - a context in which plane-filling 
fractal curves can be explored without end - and with beautiful results. 
14 



A Definition 



Now is a good time to give a more formal, more general definition: a "space-filling curve" can be described as a 
continuous mapping from a lower-dimensional space into a higher-dimensional space. In traditional mathematics, a curve 
is described as a topological space that is homeomorphic to a line: if you magnify a small region of the curve, it looks like a 
straight line. The higher the magnification, the more it looks like a straight line. But... fractals came along and changed all 
that! Consider a curvy line that has an infinite number of curls, bends and folds... at every level of magnification. And 
consider a curve that has such a serious case of horror vacui that it visits every point in a planar area in its path from start to 
finish. This is what we mean by a "plane-filling curve". It is the topological equivalent to a planar shape covering that 
same region. So you can think of this curve as being a particular way to describe that planar shape. In other words, it 
provides a mapping between a line and a 2D shape. Mandelbrot used the term "sweep" to distinguish a plane-filling 
curve from any old 2D planar shape, implying the progression of a path that passes through every point in that shape 
over some period of time. (A more thorough overview of space-filling curves is given by Hans Sagan [20]). 

I have been exploring fractal curves 
now for about twenty-five years, and I have 
drawn several hundred pictures (probably 
more than a thousand), in my lifelong search 
for fractal curves. I have also developed 
genetic algorithms and other computational 
search techniques to find new specimens. 
This book shows the culmination of my 
search for plane-filling curves. I have 
accumulated over 200 specimens and 
organized them according to a taxonomy of 
fractal curve families. Each specimen is 
shown with a unique genetic code. And I 
have included several color images of what I 
consider to be the most striking specimens. 
Many of these - I have reason to believe - 
have never been seen before, and I am 
delighted to introduce them to you. 

15 




A Very Patient Turtle Who Draws Lines 



Before we go on, I want to say a few things about process. And for that I will introduce you to a helper who will be 
demonstrating the principles used for drawing fractal curves: the LOGO turtle: a key feature of the LOGO programming 
language, used in education [0]. The turtle has quite a distinguished history. It is used to help young people learn about 
programming, math, and graphics. I am of a generation of people who learned about computer graphics and 
programming with the help of the turtle. I am excited to show you how the turtle can be a bridge that connects simple, 
visual ideas to advanced mathematical concepts, including the very complex and beautiful world of fractals. Let's follow 
the turtle through a few demonstrations. It is shown as a little black image of a turtle, as seen from above. It can move 
forward, rotate its body, and draw lines. Here are some basic actions that the turtle can do: 



Draw a line 1 unit long: 



finish 



start 



1, Draw a line 1 unit long 

2. turn right 45 degrees 

3 Draw a line 2 units long 



finish 



* 

start 



16 



The turtle can perform a set of commands as one action - as a procedure, such as "DrawSquare" 



DrawSquare: 




















1. draw a line 1 unit long 




















2. turn right 90 degrees 




















3. draw a line 1 unit long 




















4. turn right 90 degrees 




















5. draw a line 1 unit long 




















6. turn right 90 degrees 




















7. draw a line 1 unit long 




















8. turn right 90 degrees 


* 






















































* 












1 










A 








V 






* 








start 8 steps: 


1 


2, 3 




A, 5 






6,7 




8 (finish) 



Now, the turtle will demonstrate a shape that is the basis of a well-known fractal curve: the Koch curve. First, the turtle 
will rotate 90 degrees, so that it is aiming rightward. Then it will perform the procedure "DrawKoch": 



DrawKoch: 

1. draw a line 1 unit long 

2. turn left 60 degrees 

3. draw a line 1 unit long 

4. turn right 120 degrees 

5. draw a line 1 unit long 

6. turn left 60 degrees 

7. draw a line 1 unit long 



start 





This procedure, DrawKoch, can be modified so that it is scaled to one-third its original size, and the steps that draw lines 
(steps 1, 3, 5, and 7 above) are replaced with copies of the whole procedure, as shown on the next page. 



17 



DrawKoch: 

1 . draw a line 1 unit long 

2. turn left 60 degrees 

3. draw a line 1 unit long 

4. turn right 120 degrees 

5. draw a line 1 unit long 

6. turn left 60 degrees 

7. draw a line 1 unit long 


DrawKoch: 

0. Scale by 1/3 

1. DrawKoch 

2. turn left 60 degrees 

3. DrawKoch 

A. turn right 120 degrees 

5. DrawKoch turn right 120 

6. turn left 60 degrees * 




\ <£ % / 





DrawKoch 



turn left 60 



turn left 60 



DrawKoch 



This means that instead of the figure consisting of four line segments, it consists of four smaller copies of itself. Now, if 
you think about this for a moment, you will realize that there is a paradox: each of these copies will then have to consist of 
copies of themselves as well! And so on, and on. What we have is an infinite regression of copies of copies of copies.... 
Presto! We have a fractal. The problem is that it takes an infinite amount of time to draw an infinite number of lines, so we 
choose a cut-off point where recursion stops. (The picture below stops at 5 levels.) 




18 



By the way, this curve is usually referred to as the "Koch Snowflake Curve", from the original description in 1904 by the 
Swedish mathematician Helge von Koch [12] [13]. He showed the curve as a progression of applying triangular bumps 
upon bumps onto the perimeter of a triangle. It looks a bit like a snowflake. 








The Koch snowflake is the equivalent of three Koch curves connected together as if they 
were the sides of an equilateral triangle. Mandelbrot referred to this triangle as the 
"initiator", and the curve that is placed onto the three sides as the "generator". In this 
book, I am mostly concerned with generators: that is, what happens in-between the two 
endpoints of a single fractal curve. 

I will not get into the nuts and bolts of programming fractal curves here. But I do 
have to explain some aspects of the fractal algorithm: When I make a fractal image, I can 
control the number of levels of which the copies are made. In other words, I can draw the 
Koch curve at level 1, in which case it just consists of four line segments, or I can draw it 
at level 2, in which case those lines consist of smaller copies of the Koch curve (scaled to 
one-third of the length of the segments of level 1), making the whole curve a figure of 16 
line segments. Level 3 would consist of 64 line segments, and level 4 would consist of 256 
line segments, and so on. To be consistent with Mandelbrot's terminology, let's call this 
fractal curve a "teragon" (as in the "5 th teragon" or "12 th teragon, and so on). Also, 
throughout this book I will be using the term "fractalization" to denote the process of 
increasing the fractal level from one teragon to the next - the process of replacing each 
segment with a small copy of the generator. 

Let's assume that the algorithm that draws a fractal curve automatically scales the smallest copies so that the 
distance from endpoint to endpoint is always the same, no matter how many levels are used, and that the lengths of the 
line segments always scale appropriately, just like the example shown on this page at right. 

19 






The Turtle Flips Out 

Now, there is an important aspect of the fractals that our little turtle will be drawing; and that is the fact that the line 
segments in a fractal generator can be "flipped" in various ways, to make the copies do clever tricks (which are important 
for enabling the many varieties of plane-filling curves that will be shown later). But before I show you these tricks, I need 
to create a new view of the turtle, to make it easer to explain. This view comes in four flavors, as shown below: 



top-down view 
(bilateral symmetry) 



* 



side view 
(four ways to flip) 



1,1 

normal 


-1,1 

flipped along vertical axis 


1,-1 

flipped along horizontal axis 


-1,-1 

flipped in both axes 
(same as rotation 
by 180 degrees) 



Now that we have these different views of the turtle, consider an image of the turtle drawing the Koch generator like this: 




this segment is drawn upside-down 



4. 



20 



The implication of this flipped segment is that the copy of the Koch generator that is drawn in place of that segment is 
upside-down. 

flipped^ \ 






whole section flipped 



i 



flipped 



flipped 




Now let's fractalize this to teragon 4. Well, this is no longer the Koch curve we know and love! It has changed quite a bit, 
due to this single flipped segment in the generator. This flipping gets propagated to all the sub-copies, and it makes its 
effect all they way to the small details of the fractal (although not in the smallest level). 




21 



How can this flip trick be used to make a plane-filling fractal curve? Glad you asked. I will show you. But first, consider 
the following fractal generator with no flippings, and its first 6 teragons: 



♦ 



no flippings 



♦ 








22 



That is an interesting fractal indeed. But it crosses itself all over the place - starting at teragon 3 and increasingly for each 
level. It turns out that the turtle can do some flipping on alternating segments (the two diagonal ones), to transform this 
into a plane-filling, self -avoiding, fractal curve. Here it is with the first 6 teragons: 



flip 



flip 



♦ 



\ 



♦ 








With these two flippings, this curve can be fractalized forever and it will never cross itself. 



23 



1. draw 



A flipping along the vertical axis is a bit more tricky to explain, because it implies that the turtle has jumped to the end of 
the line and drawn it backwards. This concept might be easier to grasp for those of you who have used the LOGO turtle, 
because the turtle can be told to move to a position (without drawing a line). 

To illustrate this in a playful way, 
imagine the turtle drawing a 3-segment 
fractal generator in 6 steps, illustrated at 
right. In order to draw the third segment, 
the turtle flies to the end (step 3), draws the 
line backwards and upside-down (step 4), 
and then flies back to the endpoint again 
(step 5), ending at the correct finishing 
location (step 6). What is the fractalized 
result? It is a cool self-avoiding curve, called 
the "Dragon of Eve". Notice the 
strategically-oriented bump at the bottom- 
right of the second teragon - this is critical 
to making The Dragon of Eve a self- 
avoiding curve. 




5. 




24 



Now let's look at a plane-filling fractal curve that takes advantage of another kind of flipping. (In this example, I have 
shrunk the turtle in the top three segments, to indicate that they are half as long as the two segments at the bottom.) You 
may find it difficult to see exactly how these flippings allow the curve to fractalize the way it does. So to make it a little bit 
easier, I added some visuals to the first two teragons. 








25 



Pictures of flipped-out turtles are cute, but I will not be using them in the diagrams 
throughout this book. Instead I will be using half-arrows because they are more 
compact. So, the generator we just saw would be drawn like this. . . 




In addition to representing these flippings visually with a half-arrows, they are also specified using a genetic code, as 
shown in the table below. At the bottom is a representation using a pointing finger. I will use this in a few examples. 







Flip Representations 






1 ^ 1 ^ 1 1 


turtle view 
























genetic code 


1,1 


-1,1 


1,-1 


-1,-1 


pointing finger 


I I I 


«*J 



You may still be having difficulty imagining how a turtle drawing lines can create such shapes. You might prefer to 
understand the process in terms of transformations; copying shapes and then translating, scaling and rotating these 
copies in various ways to create new fractal levels. If so, you are in luck: in the next chapter I will show you some fractal 
generating techniques that are based on this idea. These techniques will help flesh-out in more general terms how fractals 
are generated, and it will put my particular scheme into a larger perspective. This will give some context for the more 
than 200 specimens archived in this book. 



26 



A Taxonomy of Fractology 

There are many (many) kinds of fractals. The most popular fractals are the images generated with math equations iterated 
in the complex plane, such as the Mandelbrot Set and the Julia Sets, and all their amazing variations and magnifications. 




These fractals are generated by calculating a mathematical function for every pixel location of a 2D grid, using the x and y 
coordinates of the grid as input values, to determine a color value. Mandelbrot and Julia sets use complex number 
equations. They have been studied extensively, and reproduced with endless variety on the internet. 

Fractals of this type are beautiful, complex, and amazing. But they do not easily lend themselves to learning the 
basic geometry of fractals, as a form of visual construction. This is why I am so enamored with self-similar fractal curves - 
as tools to think with; as visual objects to apply various geometrical ideas and processes from other domains. The process 



27 



by which they are constructed can be explained to non-mathematicians. And if you are curious enough, and especially if 
you are willing to do a little bit of programming, it can lead to discovery upon discovery. 

The fractal generation technique that I use in this book is a variation of "Koch construction". It is based on the idea of 
taking a figure consisting of connected segments, and recursively replacing each segment with a copy of the whole figure. 
This is how the Koch curve is generated, and it is also how an infinite number of other possible fractal curves can be 
generated. Now, before I go on, I want to describe a few of the methods that have things in common with Koch 
construction. In some cases, these might be considered variations, or different approaches, to Koch construction. They are: 

• Node-replacement curves 

• Iterated function systems (IFS) 

• Branching Fractal Trees 

• L-Systems 



Node-Replacement Curves 

One of the most well-studied techniques for generating plane-filling curves is a process that is similar to Koch 
construction, except that it is based on node replacement instead of edge replacement. This technique has been explored by 
mathematicians and hobbyists for centuries. Peano, Hilbert, Moore, and Wunderlich, are among the mathematicians who 
have described such curves. Below is an example of using this technique to generate a well-known curve with a generator 
of four nodes: the Hilbert Curve [9]. It is based on the fact that a square can be tiled with four smaller squares. Take a look 
at how this simple generator is copied four times, transformed, and connected to form the shape at right: 



2 3 

1 4 



1* 



I 

• ' I » 



generator 



four copies, transformed 



connected 



28 



Now let's see six progressive fractalizations (with node connections added). The Hilbert curve is shown at left. On the 
right is a variation called the Moore curve. 





Node-replacement curves are generated by replacing tiles with smaller copies of the generator, while edge-replacement 
curves are generated by replacing the segments of a generator with smaller copies of the generator. One important 
consequence of node-replacement is that it requires connective segments to be added at each stage, to keep the curve 
unbroken, as we just saw above. Some examples of similar curves are shown below: a curve attributed to Walter 
Wunderlich (a); a curve attributed to Peano (b); and the Z-Order (Lebesgue) Curve (c). The Sierpinski Curve (d) is shown 
here because it is similar, however it is of a different class: it uses a different kind of connectivity at each stage. 

node-replacement curves 







[UU}[\] 



un 



mm 



mmmJ 



to 








(a) 



(b) 



(c) 



(d) 



29 



Gary Teachout [22] came up with several fractal curves using a similar technique. A few are shown here. 




original shape 



copies, transformed 



/L J^/L^L 




original shape 



copies, transformed 



By the way, the resulting shape doesn't have to be a simple polygon; it can have a fractal boundary. Here's a generalized 
technique for generating curves with node-replacement: start with a collection of tiling polygons, like squares, and 
connect each of the tile centers with line segments, as shown below at left. Now...fractalize! Notice in this example that 
although there are five tiles in the initial figure, there are only four line segments. This fact is why connecting lines are 
required at each iteration (As we saw in the Hilbert curve, four square tiles are connected using three line segments). 



^ 






The above curve fractalizes to the same shape as a well-known fractal curve introduced by Mandelbrot (at right). I'll be 

describing this curve later on. 

30 



Iterated Function Systems 

A more general class of fractal techniques is a process known as "iterated function systems" (IFS), conceived by John 
Hutchinson [10], and developed further by Michael Barnsley [2], and others. An intuitive way to describe IFS is to start 
with an initial image or piece of geometry, and to replace it with 2 or more copies of itself. Each copy has some 
transformation applied to it (e.g., rotation, translation, scaling). With IFS, copies of the original shape are progressively 
reduced in size repeatedly until they are essentially "atomized" as points, whose union creates the resulting shape. 

As long as the copies are scaled to be smaller than the original geometry, the ultimate result is always a "dust" - 
the number of visual elements goes to infinity, and their sizes become infinitely small, thus, the original geometry could 
be anything, basically. Take the example below of the symbol for Pi, a hammer, and a poodle. This trio of elements is 
copied twice, and each copy is scaled to 70% its original size. Using the bottom of the hammer as the pivot point, one copy 
is rotated -40 degrees, and the other is rotated 60 degrees, and also translated down and to the right a bit. All these 
translations happen in the frame of reference of the transformed copy. This example shows 8 iterations of this process, 
and you can see that a fractal has emerged with its own peculiar shape - a shape that may not have been predicted from 
applying the transformation only once. 



n / 



r< t \**, J2JL 











V* 



*4 vtf 




31 



Here is another picture that illustrates this process. In this picture, the original geometry consists of two gray squares, 
shown at left with a larger outlined square for reference. Each gray square is replaced with the original geometry, using 
the same relation that the gray squares have with the larger outlined square. 





we 


i P" 








,>v " 


■ fH 




\J1 P 


" -v. 












«»>* tf 

* $* * 


, 


jC^l* 


VW 




I"* 






*r^ * 




f 



The fern is a classic natural form that is often used to demonstrate IFS. 




/ 




\ 


, 4 




\ 













IFS can be seen as a more general way to perform Koch construction. Just consider the 
segments of a Koch generator as the original elements. Instead of poodles and hammers, 
you start with straight lines, which happen to transform at each stage so that they 
always form a connected chain. 




32 



Branching Fractal Trees 



When visualizing hierarchical data structures with many branchings, such as classifications of biological species, one ends 
up with a fractal-like shape, especially if there is deep hierarchy. This is indicated below in a Tree of Life drawn in 1866 by 
the German biologist and illustrator Ernst Haeckel (a). 




v V V 




(c) 




Branching fractals differ from Koch fractal curves in two primary ways: (1) they contain branch-points (obviously), and 
(2) they include the whole hierarchy of ancestry used to calculate each level: trunk, branch, stem, and all. Koch 
construction, on the other hand, replaces each parent generator with offspring copies when a new teragon is calculated, 
leaving only the smallest, most detailed segments. The classic fractal tree (a) uses a single angle at each branch point, with 
a uniform scaling < 1.0 of offspring segment lengths. When the angle is widened, we get a shape like (c). If the angle is 90 
degrees (and if the length scaling is 1/V2) it becomes the H-tree (d) - a plane-filling, self-avoiding fractal. Irregular 
branching forms can be created in a variety of ways, including diffusion-limited aggregation (e): start with a seed crystal 
particle surrounded by free-floating particles moving randomly. If a floating particle comes in contact with the seed, it 
sticks, thus extending the seed crystal, which gradually grows into a fuzzy branching fractal form. 

33 



L-Systems 

In 1968, a botanist by the name of Astrid Lindenmayer devised a way of describing the growth of plants. This has come to 
be known as "L-systems". They are recursive "string-rewriting systems", used to model branching forms, embryological 
development, and many self-similar fractal geometries. Consider the following L-system description used to draw the 
Koch curve: 



axoim: 


F 




constants : 


+ - 




angle : 


60 




rule: 


F - F+F- 


-F+F 




The axiom "F" means "draw a line segment". The symbol "+" means turn left 60 degrees. And the symbol "- " means 
turn right 60 degrees. We start with the axiom "F", and we apply the rule, which replaces "F" with "F+F — F+F". This 
results in a teragon 1 Koch curve. Notice the use of " — " to represent turning right twice, which makes a 120 degree right 
turn. Now we apply the rule again, replacing all instances of "F" with "F+F — F+F". This gives us: 



F+F — F+F+F+F — F+F — F+F — F+F+F+F — F+F 



If we apply the rule a third time, replacing all instances of "F" with "F+F — F+F", we get: 




F+F — F+F+F+F — F+F — F+F — F+F+F+F — F+F+ 
F+F — F+F+F+F — F+F — F+F — F+F+F+F — F+F-- 
F+F — F+F+F+F — F+F — F+F — F+F+F+F — F+F+ 
F+F — F+F+F+F — F+F — F+F — F+F+F+F — F+F 




Once this string has been grown, it can be given to the turtle as a single list of instructions, and the turtle goes to work. 
34 



This is only the very beginning of what L-sys terns can do! L-sys terns are more than just a way to make fractals; they can 
be used for describing (and constructing) a huge number of forms, including Hilbert curves and its variants, branching 
forms, and many other shapes. L-sy stems can even be used for modeling embryological development over time. This 
flexibility is because any kind of alphabet can be used (not just F's and +'s and - s) which can stand for any transformation 
or operation you can imagine. 

L-systems provide textual representations of fractals (linear strings of alphabetical symbols that are read from 
start to finish). The turtle must read the entire string - like a novel or a score for a piano sonata - and follow it from start 
to finish. Although L-systems are elegant, terse, and very expressive, I prefer to put the turtle into the middle of the 
algorithm, so to speak, and engage the fractal growth process in a concrete, procedural way - to conceptually enter into the 
geometrical process of fractalization - as a visual-spatial activity. My turtle is not reading a score; it is performing a fractal 
dance - holding in its memory all the recursive levels and transformations required to do the dance. 

Now that I have described a few alternate techniques and variations used to make fractals, I want to now 
focus on the particular technique that I have devised. It is based on Koch construction, as described by Mandelbrot, but it 
has some new and unique differences, which I think might make it easy to understand. Most importantly, my scheme 
allows all Koch-constructed fractal curves to be placed into a taxonomy, allowing us to see relations and family types, and 
to explore variations. Now, the first thing I have to explain is the backdrop upon which all these wonderful specimens are 
generated: the grid. 

Two Grids 



All plane-filling fractal curves in my 
scheme fit into one of two kinds of 
grids: triangle or square. The distance 
between grid points is exactly 1, in 
either case. The most common fractal 
curve angles and lengths in these 
specimens are shown at right, associated 
with each grid. 




triangle grid 

most common angles: ±60, 0, ±30, ±120 

most common lengths: 1,^, 2 



square grid 

most common angles: ±90, 0, ±45 

most common lengths: 1,V2, 2 



35 



Consider two curves: the Koch curve and a similar one with a 
square bump (sometimes called the "Square Koch"). Not only 
do the generators fit snuggly within their grids, but all of 
their fractalized teragons fit snuggly as well (that is, they fit 
snuggly into grids with smaller and smaller cells as fractals 
levels increases). 



Fractal Dimension 

Notice also that each of these two fractal generators covers a 
span of three grid units, from left to right. This span is called 
the "interval length" of the fractal generator. The Koch curve 
has four segments, but its squarish friend has five: it fills a bit 
more space - it's slightly denser. More technically, it has a 
higher fractal dimension. Fractal dimension extends the idea of 
Euclidean dimension (integer numbers) to include fractional 
numbers, and lots of fuzzy structures besides. 

Here's how we calculate the fractal dimension of a 
curve: we take the number of segments in the generator (call 
it N), and then we take the interval length of the generator 
(call it L). Then we calculate the fractal dimension using this 
equation: 

log N / log L 

In the case of the Koch curve, N=4, and L=3, and so the fractal 
dimension comes out to approximately 1.2618. For the square 
Koch, N=5, and L=3, and it's fractal dimension is 
approximately 1.4649. If the dimension of a fractal curve is 2 - 
and if it is well-behaved - it is a plane-filling curve. 



A. 





Euclidean Dimension 



Fractal Dimension 




point 



■-. fractal dust 



line 



^ ^* fractal curve 



plane 



fractal surface 



solid volume 



36 



Families of fractal curves are determined according to how their generators fit within their grids, and what kinds of grids 
they occupy. Not all fractal generators are as simple as Koch and its square friend. And not all fractal generators rest 
horizontally on the grid. I'll give you two examples. 

Let's draw a square grid, and then refer to a grid point in the lower left corner as the 
origin. This will be the starting point for all fractal generators. Since all plane-filling fractal 
generators fit into a grid, we can be sure that the end of the generator will always fall on a grid 
point. Below is a square grid with two of the grid points indicated. The distance from the origin to 
these grid points are V2 and V5, respectively. (We know this because of the Pythagorean theorem: 
a 2 + b 2 = c 2 - see diagram at right). Well, it turns out that there are two very special fractal 
generators that fit snuggly within these diagonal spaces. They are used to make the classic dragon 
curve, and the // 5-dragon ,/ (that's the name I use for a fractal I discovered many years ago). 




y^ r 



















v^ 


V^ 






<► 











dragon curve generator 




Let's fractalize these two generators and see what happens: 




What have we here? We have two plane-filling fractal curves! That means their fractal dimensions are exactly 2. And it 
should come as no surprise that the number of segments in each generator is exactly the square of the interval length. In 
other words: 

N = L 2 

Now we have a consistent scheme for finding plane-filling fractal curves. The four fractals that I have just showed you are 
listed in the table below, along with their associated grid type and interval length (which I call "family type"). This table 
represents four different family types. 

family type 



Fractal name 



Grid Type 



Interval Length Dimension 



Koch Curve 
Square Koch 
Dragon Curve 
5-Dragon 



triangle 
square 
square 
square 



9 (3) 
"9 (3) 

V5" 



-1.2618 
-1.4649 

2 

2 



Grid Distances 

It is easy to use the Pythagorean theorem to figure out the grid point distances from the origin in the square grid, but the 
triangle grid is a bit more tricky. That is because the right triangle used to calculate a 2 + b 2 = c 2 has lengths that are not 
integers. 

The image at right shows how the Pythagorean 
theorem is used on a triangle grid to find the length of 
hypotenuse c, which represents the interval length of a fractal 
generator. Remember that all fractal generator intervals fall 
between two grid points. In the triangular grid, the length of 
horizontal leg a will always be a multiple of 0.5, and the 
length of vertical leg b will always be a multiple of V3/2. It 
turns out that with these length multiples, the value of c is 
always the square root of an integer. This is very convenient 
for my fractal family taxonomy scheme! 
38 







a = 1.5 



Now, look at these two grids: 



V8~ \/l3 

o o o 


© • • • 



origin 



vr 



v^ 




The distances from the origin to some of the grid points are shown. Notice that the distances shown at the bottom row are 
expressed as square roots, but this is just another way of saying 1, 2, 3. 

The square and triangle grids provide the backdrop for identifying all the families of plane-filling fractal curves. 
Let's superimpose the triangle grid onto the square grid. In doing so, we see that there are many square root distances 
from the origin that fall on grid points (but some are missing... like 6! - and the reason is very interesting - as I will 
explain later). 



V7V~; 



V8~ TVl3 



Vl2 



„ 111 

origin y^ - y^ - ^9" 




Vl3 
Vl2 



y^ v VT v Vi3 

\ 




1 



v^ 



V9" 



39 






You may have noticed that I am only showing the distances within a certain clustered area 
because there is no need to consider any grid points that lie outside a certain pie slice, as shown 

For instance, in the square grid at right, an 
octant is highlighted, with several distances shown. 
All these distances could be found at grid points in 
the other seven octants, so we only need one octant 
to identify all the families. Similarly, in the 
triangular grid I have highlighted a pie slice 
occupying one twelfth the space. Any triangle-grid 
family type can be represented in this slice. 



in the grid, 
below. 



The reason is 






'2 



'8 
/A 



Vl8~ V25 
13 V20 
'10 Vl7 

9~ vie 







Ventrella Notation 

This grid- view of fractal generators comprises the basis for how I categorize all plane-filling fractal curves. In The Fractal 
Geometry of Nature, Mandelbrot specifies all fractal generators as existing within a horizontal interval of one unit. The 
illustration below uses the Gosper curve as an example of how my notation scheme is slightly different than the one 
Mandelbrot used. Instead of specifying the generator within the unit interval such that its endpoints lie on a horizontal 
line, I place it within a grid, and orient it so that its second endpoint lies on the grid location associated with its family 
type. This causes its interval length L to traverse a portion of the grid. My notation makes it visually more apparent that 
the Gosper curve is a member of the V7 family type. 



Mandelbrot Notation (specified in the interval [0, 1] ) 



N = 7 
1 /r = V7 





Ventrella Notation (specified in the triangular grid ) 



J 

• ±>r 




N = 7 
L = V7 



40 



I should point out one thing about Mandelbrot's choice to place all generators on a horizontal interval of unit 1. This 
normalizes the generator so that it is easier to comprehend (and compute) the mathematical transformation of that 
generator into smaller copies that are then placed onto itself. The unit vector represents a normalized generator segment. 
My scheme may be less elegant in terms of mathematical expression, but it affords a way to classify generators within a 
large taxonomy, whereby the placement of the generator within the grid is the basis of the classification. Interestingly, my 
software algorithms necessarily transform all generators to a representation within the unit interval - for ease of 
computation. So perhaps Mandelbrot representation could be seen as a necessary step, both algorithmically and 
conceptually. 

In one sense, my scheme for finding plane-filling fractal curves is simple, using the grid as a guide. However, it is 
not as simple as you might think (if you are novice in the fine art of fractalizing), because there are many misbehaved, 
self-crossing, and otherwise clumpy, hole-ridden fractals out there, obscuring the beautiful gems. And the difference 
between the well-behaved plane-fillers and the misbehaved ones is not something you can easily determine just by 
looking at a generator. For many generators, especially the ones with large interval lengths, you just have to fractalize 
them and find out. And you have to be patient. 




41 



Self-avoiders and Gridfillers 

There are a few more points I want to make before we take the tour of the specimens. I mentioned that some fractal curves 
are "well-behaved", but most are not. I need to be a little more specific than that. There are four distinct ways that a 
fractal curve can behave, in terms of how it interacts with itself: 







self-avoiding 



self-contacting (vertex) self-contacting (edge) 



self-crossing 





1 — w* 






42 



Because of the recursive nature of fractalization, any self-touching or self-crossing that occurs is sure to propagate with 
each fractalization... approaching infinity at higher levels. But self -touching and self-crossing fractal curves are not 
necessarily bad. In fact, some of the most interesting-looking fractal curves cross-over themselves excessively. And if you 
are a fractal explorer, I encourage you to fish for whatever strikes your fancy. But there is an intellectual - and in a certain 
way, aesthetic - satisfaction in finding fractal curves that are well-behaved. Also, finding them is a challenge - and we do 
so love a challenge! So, the majority of my specimens are either self -avoiding or self -touching on their vertices. 

The most exciting discoveries are the "FASS curves' 7 . "FASS" stands for space-Filling, self- Avoiding, Simple, and 
self -Similar. I have already defined "Space-filling" and "self-avoiding". "Simple" means the curve does not cross itself, 
and "self-similar" means that the curve appears the same at different magnifications and rotations. The recursive 
operations used in Koch Construction, L-systems, and IFS insure self-similarity. 

Now, there is a certain class of vertex self-touching I want to mention, in which the fractal curve touches itself at 
every grid point within the area that it covers (except for the boundary). These are what I call the gridfillers. The dragon 
curve and the 5-dragon that I showed you earlier are both gridfillers. They fill a portion of the square grid. They can be 
described as "chunks of lattice" (in Mandelbrot's words). There are also many fractal curves that fill triangular grids, such 
as the Ter-dragon (shown below, with its first eight teragons). It will be described in more detail later on. 











43 



Rounded Corners 



Since the Ter-dragon is a " chunk of lattice", it is hard to see how the curve 
sweeps through its body. To reveal the sweep of the curve, we can use 
rounded corners (more specifically: beveled, or chopped-off, corners). At the right 
is the Ter-dragon 7 s 6 th teragon, rendered with rounded corners. 

For a triangle gridfiller, chopping off the corners makes them 
hexagon-like rather than triangle-like. The 9-segment generator shown below 
lives in the square grid; chopping off its corners makes them octagon-like 
rather than square-like. 




You will notice that many of the specimens in this book have curly lines, and 
that the curls appear to be self-avoiding. That is because I have rendered 
them with rounded corners. So, don't get confused if you think you are 
looking at a specimen that is a self-a voider! To make sure it is clear, the 
diagrams always specify if a teragon is drawn with rounded corners. 

Splines 

Some of the high-resolution renderings of curves in this book employ 
splines, which are even smoother than the chopped-off corners used in 
the diagrams. The picture at right shows an example of a fractal curve 
whose sharp corners normally touch each other. Splines help to 
separate these touch points, and they also give the curve a smooth 
organic contour. 





44 



How Long is a Fractal Curve? 



Good question! Here's the answer: Infinite. And here's why: whenever you fractalize a teragon, you multiply its overall 
length by some constant value which is greater than 1. You may have heard Mandelbrot's famous question, "How long is 
the coast of Britain?" Well, it depends on whether you are measuring it with the flight of a jet plane, the mileage recorded 
from a car ride, or the meandering of a crab crawling along the shore. Since a true Platonic fractal has an infinite number 
of fractal levels of self-similarity, the length essentially becomes infinitely long (even though it still occupies a finite area) 
This is illustrated below with the Dragon of Eve. This fractal curve's length is multiplied by -1.707 at each level. 



8.492 




1.707 




14.497 




2.914 




4.974 



24.748 





42.242 




,00 

























, 


I 












/ 












J 


i 










a/ 


• 
























45 



Per-Tiling, Rep-Tiling, and Penrose Tiling 



Since a fractal curve is made of smaller copies of itself, it logically follows that a plane-filling fractal curve is a filled-in 
shape that is made of smaller filled-in shapes - identical to itself. This means that plane-filling fractal curves are tiling. 
Not only are they tiling, but they are recursively tiling. Mandelbrot called this "pertiling" (using the prefix "per" as in 
perfume: to thoroughly fill with fumes). These tiles are also examples of "rep-tiles". A rep-tile is a plane figure that tiles the 
plane and can be divided into several smaller copies of itself. Some examples are shown below at left. At right are 
pertilings (fractal rep-tiles) of a specimen I will show you later. 



E 





FS 



& 



Ksa 



u 





Some fractal explorers, such as Tom 
Karzes [11], have designed pertilings that 
are a-periodic, called "Penrose Fractals". 
This means these tilings can extend out 
forever and never repeat the same 
pattern. One of Tom's designs is shown 
at right. Penrose Fractals are further 
described by Bandt and Gummelt [1], 
andGelbrich[8]. 




t^ 



46 



When I put two related fractal specimens together like puzzle pieces, I like to use the term pertiling - especially if they 
have wild fractal boundaries. Sometimes I refer to this as "mating". Why? Because only specimens of similar species can 
fit together. You'll see as we meet the different families of plane-filling curves that each family has its own particular type 
of morphology. Below are two related specimens mating. The ends of their curves touch at the bottom of the image. 




Okay, I believe we have covered enough of the basics now. In the pages that follow, I will be showing you more than 200 
specimens of plane-filling curves. I have decided to leave some of the remaining interesting concepts for later, as they 
come up in relation to the various specimens. There's a lot more to look at and a lot more to think about. 

Let the fractalizing begin! 



47 



Gallery of Specimens 



For the sake of completeness I will start with the simplest specimen of all: a non-fractal curve consisting of a straight line. 
Its fractal dimension is 1, and its interval length is 1. 1 will use this as an introduction to the diagrams used throughout the 
book. In this diagram, the header bar at the top shows the name of the fractal at the left (although many don't have 
names). To the right of that are the interval length (expressed as a square root) and the fractal dimension. Below the 
header bar at the left is some information about the genetics of the fractal generator. This includes the grid type (not 
relevant in the case of this single line), and the number of segments. Below that is a list of numbers that specify the 
segments in the generator. Each line segment in the generator is specified using four numbers. The first two numbers 
specify its displacement within the grid. In this example, the line extends one unit in the x direction and units in the y 
direction, and so the numbers are 1 and 0. The third and fourth numbers describe the segment's flippings. I will explain 
that next. 



single line (non-fractal curve) 






interval length 


= VT 


fractal dimension = 




No grid 
1 segment 














segment values: 
1, 0, 1, 1 


w 




level 2 











generator 






level 3 





48 



Segment Flippings 

Remember the four flipped variations of the turtle I showed you earlier? These four kinds of flippings are represented in 
the third and fourth numbers. So: 1, 1 means no flipping; -1, 1, means it is flipped in x; 1, -1 means it is flipped in y; and -1, 
-1 means it is flipped in both x and y. Now let's look at an L-shaped generator with no flippings. It creates a fractal 
known as the Levy C-curve: 







J 








This in an interesting fractal curve - in a gnarly kind of way. Now, consider what happens when we try a few different 
flippings among these two segments. Take note of the subtle difference in flippings here: 



(■ 



"1,-1 Li 



A 1,1 «i,-i w 





Quite different results, eh? There are in fact 16 different possible ways to flip these two segments (since each of the two 
segment can be flipped four ways: 4 2 = 16). Here are the fractal curves that result from all possible flippings: 

49 



B 



D 




In the graph, I have labeled the rows A, B, C, D, and the columns 1, 2, 3, 4. Notice the diagonal symmetry mirrored along 

the axis that stretches from top-left to lower-right (Al, B2, C3, D4). Also notice the four boxes arranged along the opposite 
50 



diagonal (A4, B3, C2, Dl). They specify the only well-behaved fractal curves of this family. And they happen to be 
gridfillers. You can see that the well-behaved fractal curves come in two forms (which I will introduce shortly). Two of 
them are simply flipped versions of the other two, and so we conclude that there are really just two plane-filling curves of 
this family, which I call the V2 family. 

The four flippings in the upper-left corner all result in the Levy C-curve. And the four curves in the lower right 
corner all result in Cesar o's Sweep, which is a double density gridfiller, meaning, it is everywhere self -touching along its 
edges. Here is a diagram showing the fractalization of the L-shaped generator to create Cesar o's Sweep: 





eE£ 




A 




The fractal curves located at A3, B4, CI, and D2 are 
quite misbehaved: they cross over themselves and 
they leave lots of holes in the process. This is not to say 
that they are uninteresting. In fact, as a nod to all the 
misbehaved fractal curves in the world (which is most 
of them) I shall offer a portrait of the fractal curve at 
CI... here. 

The fractal curves that self-cross or self-touch 
can be considered as creatures that have reinforced 
regions in their bodies. The density of the fabric of 
their flesh is uneven - some spots are thick - other 
spots have holes. Although they may lack the aesthetic 
elegance of plane-filling curves, they often do exhibit 
some interesting forms of self-similarity, and they 
evoke familiar forms in nature. 




51 



It is time to officially introduce the first family of fractal curves: the V2 family. The first specimen I will show you is 
perhaps the most famous one of all: the classic dragon curve. Mandelbrot called it the "Harter-Heighway Dragon", after 
two mathematicians who explored it. It is sometimes referred to as the "Jurassic Park Dragon". For convenience, I will just 
call it the "HH Dragon". The other plane-filling curve of the V2 family is the Polya Sweep. Such a very different fractal! In 
fact, if we continue to fractalize these two curves to high-level teragons, the HH Dragon becomes increasingly craggy 
along its boundary, while the Polya Sweep becomes increasingly straight along its three sides. What's up with that? 



Classic Harter-Heighway Dragon Curve 



interval length = V2~ 



fractal dimension = 2.0 



Square grid 
2 segments 

segment values: 
1: 1, 0, 1, 1 
2: 0, 1,-1,-1 





generator 



level 2 



level 9 (rounded corners) 



Polya Sweep 



interval length = VT" fractal dimension = 2.0 



Square grid 
2 segments 

segment values: 
1: 1, 0, 1,-1 
2: 0, 1,-1, 1 





generator 



level 2 



level 9 (rounded corners) 



52 



The next family of plane-filling fractal curves is the V3 family. Unlike the fractal curves of the V2 family, these curves live 
in the triangular grid. Now I need to explain one aspect of my notation for fractal generators in the triangular grid. Look 
at the illustration below: 



segment values: 



1, 0, 1, 1 

0, 1, 1, 1 

1,-1, 1, 1 

1, 0, 1, 1 





^ — 


_l\_ 


> 


N 






The segment values at left specify the directions that the four Koch curve segments are drawn. These values are pretty 
straightforward when applied to a square grid, but not so much when applied to a triangular grid. In order to use a 
consistent scheme for specifying segment directions in both girds, I specify all values as if they were in the square grid. So, 
for instance, the Koch curve is shown above with the following values: (1, 0) (0, 1) (1, -1) (1, 0). Since the Koch curve is a 
member of a triangular grid family, all of its segments have two transforms applied to them: a skew (notice that the top of 
the graph is shifted to right) and a scale (notice that the height of graph is squashed). These transformations result in grid 
lines that cross at 120 and 60 degree angles instead of at 90 and 45 degree angles. 

Please keep this in mind whenever 
you are reading the segment values for 
generators in the triangular grid. To make it 
easier, I have drawn another picture at right. 
It shows six direction values (colored blue), 
which are mapped from the square grid to 
the triangular grid. 





53 



Here is a question regarding the triangular grid: look at the picture below. How many unique 3-segment paths can you 
draw from point A to point B? 




How many unique 
3-segment paths 
can you draw to 
connect A and B? 








As you can see, there are six ways to connect A to B using 3 segments of length 1. But in fact there are really only two, if 
you consider the fact that all of them are just rotations or reflections of the two examples highlighted at the top. We can 
ignore the rest of them because, as fractal generators, their teragons look exactly the same as the teragons of these two, 
just that they are rotated or reflected. Now, given these two generator shapes, consider the various ways that each of their 
segments can be flipped: since each segment has exactly four possible kinds of flippings, we can conclude that the number 
of possible flipped variations of each of these paths is: 

4 3 = 64. 



Thus, there are 128 curves to test for plane-filling (64 for each of the two paths shown in the illustration). I have tested 
these and have found that there are ten plane-filling curves of the V3 family. One of them may already be familiar to 
fractal fans: the Ter-dragon: 

54 



Ter-Dragon 




interval length = VT~ 


fractal dimension = 2.0 


Triangular grid 

3 segments 








segment values: 
1: 0, 1, l s 1 
2: 1,-1, 1, 1 

3: 0, 1, 1, 1 


A/ i 


■ 


> 


[\ 








/ V 

generator 


1 ^N 

level 2 


level 6 


(rounded corners) 



Famed computer scientist Donald Knuth is said to have first discovered the Ter-Dragon. Unlike the HH Dragon, the Ter- 
Dragon has point-symmetry: its tail looks like its head... which looks like its tail. Notice also that three copies of the Ter 
Dragon can be combined to make a larger one. But no surprise there, right? This fractal curve just oozes with three-ness. 
The box at the lower-right shows how the Ter-Dragon can tile the plane. 




The Ter-Dragon is our first example of a "Palindrome Curve", that is, a fractal curve which is symmetrical about its 
center. Palindrome Dragons have heads that look like upside-down copies of their tails. I'll be showing you more 
interesting properties of Palindrome fractals later on. 

55 



Based on the Ter Dragon's generator, we can create an entirely different palindrome curve simply by flipping each of the 
segment x values, as shown here: 



Inverted Ter-Dragon 


interval length 


= vr 


fractal dimension = 




Triangular grid 
3 segments 










segment values: 
1: 0, 1,-1, 1 
2: 1,-1,-1, 1 
3: 0, 1,-1, 1 

A/ 


<1 


, 


< 








/ V 

generator 


»> J 

level 2 


[> 


level 6 


(rounded corners) 





This simple flip changes the resulting fractal curve from being fat in the middle to having a pinched waist. I call it the 
"inverted Ter-Dragon". Below is yet another variation attained from different flippings of the Ter-Dragon segments. In 
this case, the first and third segments have their x values flipped. It is hard to predict the outcome of these small 
changes. . .and you would probably not have guessed that the result would be a curve that completely fills a rectangle! 









interval length = 


-VT 


fractal dimension 




Triangular grid 
3 segments 














segment values: 
1: 0, 1,-1, 1 
2: 1,-1, 1, 1 
3: 0, 1,-1, 1 


A/ 


o< 


S* 










/ V 

generator 


level 2 


> 


level 6 


(rounded corners) 





Just ONE flipped number. That's all it takes to transform a craggy-edged butterfly into a box. 

Now let's look at the other kind of path that can connect point A to point B. This one can produce seven unique 
plane-filling fractal curves. They are shown on the following pages. 

56 



interval length = VT~ fractal dimension = 2.0 



Triangular grid 
3 segments 

segment values: 
1: 0, 1,-1, 1 

2: 0, 1,-1, 1 
3: 1,-1, 1,-1 






generator 



level 2 



level 7 



interval length = VT~ fractal dimension = 2.0 



Triangular grid 
3 segments 

segment values: 



0, 1, 1, 1 
0, 1, 1, 1 
1,-1,-1,-1 






generator 



level 2 



level 6 (rounded corners) 



interval length 



vr 



fractal dimension = 2.0 



Triangular grid 
3 segments 

segment values: 



S 1, 1,-1 
0, 1,-1, 1 
1,-1, 1,-1 






generator 



level 2 



level 7 



57 



interval length = VT~ fractal dimension = 2.0 



Triangular grid 

3 segments 

segment values: 



1: 


0, 1, 1,-1 


2: 


0, 1,-1, 1 


3: 


1,-1,-1, 1 






generator 



level 2 



level 7 (rounded corners) 



interval length = VT~ fractal dimension = 2.0 



Triangular grid 
3 segments 

segment values: 



0, 1,-1,-1 
0, 1, 1, 1 
1,-1, 1, 1 






generator 



level 2 



level 7 (rounded corners) 



interval length 



vr 



fractal dimension = 2.0 



Triangular grid 
3 segments 

segment values: 



1: 


0, 1, 1,-1 


2: 


0, 1,-1, 1 


3: 


1,-1, 1, 1 





VtfAYfiVtVtVitYriVtiViViV 






generator 



level 2 



level 7 (rounded corners) 



58 



Yin-Dragon 






interval length 


= VT~ fractal dimension = 2.0 


Triangular grid 

3 segments 

segment values: 
1: 0, 1, l s 1 
2: 0, 1,-1,-1 
3: 1,-1, 1, 1 


generator 


level 2 


r> 








level 7 (rounded corners) 



o 



Check it out: the fractal curve above can be combined with another copy of itself that is rotated 180 
degrees. When they are joined together they create two intertwined halves of a double-sized Ter-dragon! 
The more times the teragons are fractalized, the more tightly the handshake in the middle spirals inward. 
It reminds me a yin-yang symbol. And so, I call it the Yin Dragon. The two previous specimens are also 
shown at the bottom, as yin-yang pairs. 

The Yin Dragon was also discovered 
by Tom Karzes [11], who called it 
"Half-TerDragon". He created the 
following cool pertilings: 














iffi§ 


1 


mm 






mm 












59 



Now we come to the V4 square grid family. Let's return to the Koch Curve, which has four segments. If we morph the 
Koch generator, progressively sharpening the triangle bump in the middle, causing the first and fourth segments to come 
closer, the fractal dimension of the resulting curve will approach 2. 












When the transformation is complete, the interval length is 2, and the second and third segments of the generator become 
a two-sided needle pointing upward. This is a variant of Cesaro's Sweep that I showed you earlier. It is a twice-dense 
gridfiller: it is self-touching among all segments (except for the segments that lie on the bottom edge). 



Cesaro's Sweep interval length = V4~ fractal dimension = 2.0 


Square grid 
4 segments 

segment values: 






1 
4 


1, U, 1, 1 

0, 1, 1, 1 










U,-l, 1, 1 
1. 0. 1. 1 


















4 


































f 


















r : 




n 




m w 


rr 




T1 




generator level 2 level 5 







60 



Wolter Schraa [21] created a nice artistic image showing the transition of a curve from dimension 1 to dimension 2. A 
Koch Curve-like region emerges just after the middle area, and at the very end, it closes up to form the characteristic 
folding of Cesar o's Sweep. Here is an altered version of Schraa' s image: 




Now, back to a familiar question: in a square grid, how many ways can you draw four connected lines of length 1 from 
point A to point B, without having them self-contact? (Not counting rotations and mirror-images). The answer is 2: 











□ 


» 


B « 


1 



pl. m 



Now, let's start with the first generator above (the square bump with a level segment to its right). How many plane-filling 
curves can we find using various flippings of this shape? Well, let's rule out a few curves that are already represented by 
the V2 family: the HH Dragon and the Poly a Sweep. Observe that the level 2 teragons of the V2 family have the same 
shape (only rotated and flipped). Thus, transformed replicas of the V2 curves can be generated with this shape. 



61 



Besides these exceptions, I have discovered three unique plane-filling curves of the V4 square grid family. The first one, 
shown below, fills a rectangle that is tilted 45 degrees. It is a partially self-touching curve: many parts of the curve are self- 
touching at their vertices, but the rest of the curve is self-avoiding. It is shown below at level 6, tilted 45 degrees, with 
colored bars where there are gaps longer then a specific length. Can you describe the pattern of these gaps? 



interval length = VT" 



fractal dimension = 2.0 



Square grid 
4 segments 

segment values: 



0, 1,-1, 1 

1, 0, 1, 1 
0,-1,-1,-1 
1, 0, 1,-1 




generator 



level 2 



level 5 (rounded corners) 




62 



These next two curves are curious indeed. They appear to have variations on a similar motif. 



interval length = V4~ fractal dimension = 2.0 


Square grid 
4 segments 

segment values: 
1: 0, 1, 1,-1 

2: 1, 0,-1, 1 
3: 0,-1, 1,-1 
4: 1, 0,-1, 1 








^ 












1 














^ 
















generator 


level 2 






level 5 (rounded corners) 









interval length 


= vr 


fractal dimension = 2.0 


4 


}uare grid 
segments 

;gment values: 

0, 1,-1, 1 

1, 0, 1,-1 
0,-1,-1, 1 
1, 0, 1,-1 




















level 5 (rounded corners) 


] 


" 


k 
























w 




r 


w 












generator 




level 


2 







The second specimen is shown at right, pertiled four times, to make a square. 




63 



Now I'll show you the other curve that can be made using the other path from A to B that I showed. Mandelbrot included 
it in his book, and attributed it to Peano, calling it the "Peano Sweep". It is self -touching along some proportion of its 
edges. This is apparent at level 2. 



Peano Sweei 



interval length = V4~ 



fractal dimension = 2.0 



Square grid 
4 segments 

segment values: 



0, 1,-1,-1 

1, 0, 1, 1 
1, 0, 1, 1 
0,-1,-1,-1 



generator 




level 2 



level 5 (rounded corners) 



For curves that are self-touching on 
edges, I sometimes use a different 
technique than rounded corners. In 
this case, I use a simple low-pass 
smoothing filter. Basically, after the 
points of the curve have been 
calculated, I adjust the position of 
each point to equal the average of 
the positions of itself plus its two 
neighbors. This has the effect of 
separating the edge-adjacencies, 
allowing space around the curve to 
breathe. Did you notice a similarity 
in the inner pattern to an earlier 
specimen of this family? 



-• f 



J L 

1 1 1— • 




64 



Peano Sweep 
(edge-replacement) 



Hilbert Curve 
(node-replacement) 



2 


3 


1 

i — 


4 

— i 



- 4 



2 3 2 3 

> » • * 1 

i i • « 1 



^— —* i ■ 




After applying this technique to make the curve breathe, I 
noticed a similarity to higher-level fractalizations of the 
Hilbert Curve, which we met earlier. And indeed, there is 
a direct correlation. The Peano Sweep is basically a Koch- 
constructed variation of the Hilbert curve, using edge- 
replacement instead of node-replacement. Notice that in 
both cases there are four tiling squares. 

In the second teragon, we see that the scaled-down copies 
of the generators that are applied to the two bottom 
squares are pointing inwards. The copies of the generators 
applied to the top two squares remain pointing upward, in 
their original orientations. As I pointed out before, node- 
replacement requires extra connective lines, shown here in 
pink. 

Also, notice that after several levels of fractalization, these 
curves start to look more similar (when using the 
smoothing filter technique on the Peano Sweep). Check 
out the main artery extending upward from the middle of 
the bottom, which is more noticeable on the Peano Sweep. 
There are also several secondary arteries - all of which 
correspond to the cascade of transformations used to 
generate the curve. 



(rounded corners) 



65 



A New Slant on Fractal Dimension 



Now it is time to explain a new aspect of fractal dimension, which wasn't necessary until now. Consider the illustration 
below. The shape at left has three segments, but the slanted one is longer than the others. Its length is V2, while the other 
segments have length 1. Now here's a trick: if each of these lengths are squared, and then summed, the result is 4. 

2+ 1 +1=4 



V2> 












\y 


1 




■ 


1 

* 



Might this generator create a curve that qualifies as a member of the V4 family? Can a curve of the V4 family with only 3 
segments fractalize to a plane-filling curve? Well, let's revisit the equation for fractal dimension: log N / log L. Now, 
instead of N representing the number of segments in the fractal generator, let's re-define N as: "the summed squares of all 
the segment lengths". Up until now, all the generators so far have had segment lengths of 1, and since VI = 1, we could 
just refer to the number of segments. But now, we will change the definition of N to accommodate segments lengths 
greater than 1. And behold: the generator I have just showed you, given just the right flippings, results in a fractal curve 
that looks like the HH Dragon (but not quite! - look more closely). I call it VI Dragon. 



V1 Dragon 






interval length = Va~ 


fractal dimension = 2.0 


Square grid 
3 segments 

segment values: 
1: 1, 1, 1, 1 
2: 1, 0,-1,-1 
3: 0,-1, 1, 1 






/\ 




level 7 (rounded corners) 


generator 




f 


i 


' /\ 








9 

level 2 







66 



Notice that some of the blobs are bigger than others. That is because of the difference in lengths among the segments, 
which cascade into many different sizes. The longest segments appear to be at the left-bottom (at the start of the curve). 
This is related to the fact that the first segment in the generator is the longest. 

But is it Plane-filling? 

You might not think this a plane-filling 
curve, because of all these conspicuous 
blobs of different sizes. But remember that 
this curve (and in fact every curve in this 
book) has a limited fractal level. If we 
were to fractalize this curve to infinity, all 
of the curls would accumulate and close 
up to completely fill the shape. 
BUT... even at infinity, would the density 
still not be uniform throughout the shape? 
I shall leave this as an open question for 
you to ponder. 




Now let's try a different flipping of this shape. Lo and behold, the resulting fractal curve looks quite different indeed. 











interval length = Va~ 


fractal dimension = 2.0 


Square grid 
3 segments 

segment values: 
1: 1, 1,-1,-1 
2: 1, 0, 1, 1 
3: 0,-1, 1, 1 






level 2 






level 7 


w 




/ , 




/ 

generator 




r 




\ 













67 



This fractal curve is special. It is not too often that I find fractal curves that are self-avoiders. Well, this one is! Let's see it 
enlarged a bit, and with some cool coloring added. By the way, this curve appears to also have been discovered by artist 
Victor Carbajo [3]. 

And here's an interesting fact: if you detach the section at the lower-left, and rotate it 90 degrees, pivoting about 
the bottom corner, it fits snuggly into the remaining hole. Not only that, but it turns the curve into a closed loop. On the 
next page, I show this process, and then I show what it looks like with the interior of this closed loop filled with a solid 
color. 




68 




69 



Below are two other generators that have a segment length of V2. 



interval length = V4~ 



fractal dimension = 2.0 



Square grid 
3 segments 

segment values: 
1: 1, 1,-1, 1 
2: 0,-1,-1,-1 
3: 1, 0, 1, 1 





generator 



level 2 



level 5 (beveled corners) 







interval length 


= vr 


fractal dimension = 




Square grid 
3 segments 

segment values: 
1: l s l s l s 1 
2: 0,-1, 1, 1 
3: 1, 0,-1,-1 


A 


f 


N/ 


\ 




level 5 


(rounded corners) 








generator 


■^ 


level 2 




V ^ 



Look familiar? Given a specific generator shape, one set of flippings results in a right triangle while the other results in a 
dragon (I call this one the V2 Dragon). 

Both of these fractal curves are partial gridfillers: Some of their vertices touch and some don't. This makes for 
some interesting internal patterning, as shown on the next page. 



70 




There are two more generators of this family that have a segment length of V2. Here's one of them: 



interval length = Va~ 



fractal dimension = 2.0 



Square grid 
3 segments 

segment values: 
1: 0, 1, 1, 1 
2: 1,-1,-1,-1 
3: 1, 0, 1, 1 




generator 



level 2 



level 6 



On the next page it is shown enlarged at a higher level, and with rounded corners, so you can appreciate its meandering 
path. 



71 




Finally, I want to show you a member of the V4 square family, which I am especially proud of. I call it the "Dragon of 
Eve". It is named after Eve Peters, who was my mother's Art teacher in High School, and whose house I stayed at in my 
first semester in graduate school. I discovered it while living in her house. 

The Dragon of Eve is a self-avoiding fractal curve. Here it is: 



72 



Dragon of Eve 



interval length = VT" 



fractal dimension = 2,0 



Square grid 
3 segments 

segment values: 
1: S 1, l s 1 
2: 1,-1, 1, 1 
3: 1, 0,-1,-1 




generator 



level 2 




level 6 



Here it is enlarged at a higher level. This drawing uses a technique in which line thickness is proportional to line length. 
This curve reminds me a bit of the Great Wave of Kanagawa, by the Japanese artist Hokusai. 




73 



Since V4 = 2, and since square grids and triangle grids share common grid points along an axis (the horizontal "floor" of 
the two grids), you may suspect that there exists a family of V4 plane-filling curves that live in the triangle grid. Indeed I 
have discovered what I believe to be all of them. 

But before I show you these plane-filling curves, I would first like to show you a member of the V4 triangle grid 
family that is not plane-filling: its fractal dimension is -1.5849625, and it generates the famous Sierpinski Arrowhead 
Curve. It is identical to the Sierpinski Triangle (a solid triangle with its center triangle cut A A A A 
out, and then with the center triangles cut out of the remaining three, and so on)... 



A 

■AAA 



▲AAA AAAA AA 



Serpinski Arrowhead Curve 



interval length = VT" 



fractal dimension = 1.5849625 



Triangular grid 
3 segments 

segment values: 
1: 0. 1. 1,-1 
2: 1, 0, 1, 1 
3: 1,-1, 1,-1 



\ 



generator 



level 2 




level 7 (rounded corners) 



When you fractalize the Sierpinski Arrowhead Curve, it converges toward 
the Sierpinski triangle. At each stage, it accumulates bays and peninsulas, 
which approach each other, getting closer and closer.... but never touching. 
So in fact this is a self -avoiding curve. 



A 




74 



I was delighted when I discovered a curve that actually creates a. family of Sierpinski curves] In the diagram below, I show 
this curve fractalized to level 6. Daddy Sierpinski sits proudly to the left, with Mommy Sierpinski to his right. To her 
right is daughter Sierpinski, followed by little brother Sierpinski, and then baby Sierpinski, and finally, the family pet: 
Turtle Sierpinski. 



Serpinski Fa mi 


iy 








interval length = 


= vr 


fractal dimension 




Triangular grid 

3 segments 


















segment values: 
1: 0, 1, 1,-1 

2: 1,-1,-1,-1 
3: 1, 0, 1, 1 


A 


w 


level 2 


A 










generator 






level 6 


(rounded corners) 





Here is a higher-level rendering of the Sierpinski family fractal curve, with some extra members of the family to the right 
of the pet turtle (I leave it to you to imagine who are the tiniest members of this family). 




75 



Now it's time to look at the plane-filling members of the V4 triangle grid family. I will start with one that requires no 
flippings in its segments. Here it is. It happens to be a palindrome: 



interval length = VT" fractal dimension = 2.0 



Triangular grid 

4 segments 

segment values: 
1: 1,-1, l s 1 

2: 0, 1, 1, 1 
3: 0, 1, 1, 1 
4: 1,-1, 1, 1 




/ 




7 




generator 



level 2 



level 5 




76 



This fractal curve is a gridfiller, but it has a wild boundary, which has a high fractal dimension of its own. Not only that: 
the boundary touches itself. This fractal makes the notion of "plane-filling" very fuzzy (so to speak) because the region of 
the plane that it fills is scattered haphazardly. All the filled-in areas of fully fractalized curves that we have seen before 
this one had boundaries that were either straight lines or else they were fractal curves of their own... but never self- 
touching. Now get ready; here is that same generator with some different flippings. Its boundary is so amazingly self- 
touching, you might call it "self-enveloping" (but it is NOT self-crossing, as revealed by rendering it with rounded 
corners). 



interval length = V4~ 



fractal dimension = 2.0 



Triangular grid 
4 segments 

segment values: 

1: l.-l, 1,-1 

2: 0, 1,-1, 1 

3: 0, 1, 1,-1 

4: 1,-1, 1,-1 





generator 



level 2 




level 4 (beveled corners) 



When highly fractalized, this curve becomes a parallelogram filled with a cacophony of triangles. 




77 



Here is that same generator with yet another set of flippings. 



interval length = V4~ 



fractal dimension = 2.0 



Triangular grid 

4 segments 

segment values: 
1: 1,-1,-1, 1 
2: 0, 1, 1, 1 
3: 0, 1,-1, 1 
4: 1,-1,-1, 1 




_A 




generator 



level 2 




level 5 



Now here is a different generator of this family. This curve is highly self-enveloping. 









interval 


length 


= vr 


fractal dimension = 2.0 


Triangular grid 

4 segments 












^ 


, 


A 


S 






ImS 


<&**$ga& 


sc 

4 


;y NltMl L VdlUCi. 

0, 1,-1, 1 
0, 1, 1,-1 

1,-1,-1, 1 
l.-l. l.-l 


V 


|3^^3BF^ 




\ 


v 




/ \ 


\ 


/ 




^1 


W-^J^^L^ 




/ \ 


\ 









%$fP*^ kdsEr 




generator 


level 2 








level 6 (rounded corners) 



On the next page is a picture showing two copies of this curve... mating. They are engaged in the most intimate embrace 
one can imagine. 



78 




79 



Here is the same generator shape with alternate flippings. This curve is very different. Every family has its token dragon 
curve - some of them are more dragon-like than others. Would you call this a dragon. . .or a scorpion? Or a. . ..? 



interval length = VT" 



ractal dimension = 2.0 



Triangular grid 

4 segments 

segment values: 
1: 0, 1, l s 1 
2: 0, 1,-1, 1 
3: 1,-1, 1,-1 

4: 1,-1,-1, 1 






generator 



level 2 



level 5 




80 



Here is another curve based on the same generator shape. I have rendered it below with hierarchical coloring to indicate 
the way nodes are formed: each node has 3-way symmetry and is connected to other nodes at pinch-points. 



interval length = VT" fractal dimension = 2.0 



Triangular grid 

4 segments 

segment values: 
1: 0, 1,-1,-1 
2: 0, 1, 1, 1 
3: 1,-1,-1,-1 
4: 1,-1, 1, 1 





generator 



level 2 




level 4 (beveled corners) 




81 



The last members of the V4 triangle grid family I will show you are curves that exactly fill an equilateral triangle. They are 
pseudo-gridfillers. 











interval length = VT" 


fractal dimension = 






riangular grid 

segments 

;gment values: 

1, 0, 1, 1 

-1, 1,-1,-1 

1. 0, 1, 1 




w 




level 4 


(rounded corners) 




4: 1,-1,-1,-1 


,Y\ 


\ 


\ 


w 






^Vv 




g 


anerator 


level 2 



You can think of each of the four segments of this generator as 
being responsible for one of four sub-triangles. The precise set of 
segment flippings is important, so as to avoid edge-touching. 
Zbigniew Fiedorowicz [6] made a variation of this fractal - 
shown below. 




A 




82 



Two variations are shown here, and at the bottom of the page is a portrait of all three variations at level 4. 









interval length = V4~ 


fractal dimension 




Triangular grid 

4 segments 

segment values: 
1: 1, 0,-1, 1 
2: -1, 1, 1,-1 

3: 1, 0,-1, 1 
4: 1,-1, 1,-1 


level 2 


^. 


level 4 


(beveled corners) 




X\ 


generator 









interval length = VT" fractal dimension = 






riangular grid 

segments 

;gment values: 

1, 0, 1, 1 

-1, 1,-1,-1 

1, 0, 1, 1 

1,-1, 1,-1 


w 




Jk 








vX\ 




\ 


\ 


aaa 




JVV 




generator 


w 
level 2 


level 4 (beveled corners) 




83 



Now we come to the V5 family. We have already met the 5-dragon: 



5-Dragor 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 
1: S l s l s 1 
2: 1, 0, 1, 1 
3: 0,-1, 1, 1 
4: 1, 0, 1, 1 
5: S 1, 1, 1 





generator 



level 2 



level 4 (rounded corners) 



Remember how I flipped the x values of all the segments of the Ter-Dragon to make the Inverted Ter-Dragon? Well, the 
same can be done with the 5-Dragon. And, just like the inverted Ter, the inverted 5-Dragon has a pinched waist. 



Pinched 5-Dragon 



interval length = VT~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 

0, 1,-1, 1 

1, 0,-1, 1 
0,-1,-1, 1 
1, 0,-1, 1 
0, 1,-1, 1 





generator 



level 2 



level 4 (rounded corners) 



84 



This next specimen is Mandelbrot's Quartet: "Each 'player', and the table between them, pertile." [16]. He 
claims to have "designed" it, although one could debate that such a curve is "discovered" rather than 
"designed". In either case, it is one of the finest self-avoiders. 




Quartet 








interval length 


= vr 


fractal dimension 




Square grid 

5 segments 

segment values: 
1: 0, 1,-1,-1 
2: 0, 1, 1, 1 
3: 1, 0, 1, 1 
4: 0,-1,-1,-1 
5: 1, 0, 1, 1 




w 


w 


4 

level 2 


a 




level 4 




J 


4 
r 

generate 


r 



I discovered a variation of this generator, created by reversing the x-f lipping of each segment. I call it "Inner-flip Quartet". 



Inner-flip Quartet 






interval length 


= vr 


fractal dimension = 






}uare grid 
segments 

;gment values: 
0, 1, 1,-1 

0, 1,-1, 1 

1, 0,-1, 1 
0,-1, 1,-1 
1, 0,-1, 1 




^ 




4 

level 2 


i\ ■ 




level 4 




> 


\ 


^ 






generate* 


r 



Next I will show you six variations on a single generator shape. Two examples are shown on the next page. The first 
example has an interesting property: due to the flippings, the orientations of copies of the generator do not correspond 
with a continuous square grid. You can see this in the mixture of 90 and 45-degree angles in the level 2 teragon. I would 
not have expected a curve like this to survive the fractal test. There is indeed self-contacting in several vertices, but other 
than that, it is rather well-behaved, as indicated by rendering with rounded corners. 



85 













interval length 


= vr 


fractal dimension = 2.0 




quare grid 
segments 

;gment values: 

0, 1, 1,-1 

1, 0, 1, 1 

0, 1,-1,-1 

1, 0,-1, 1 
0,-1,-1,-1 






^ 




level 2 






level 3 (rounded corners) 


w 


f 


4 






generator 



A close relative of this curve is shown here. 













interval length 


= vr 


fractal dimension = 2.0 


Square grid 
















5 segments 














^P 


segment values: 














\\C^ 


1 


0, 1, i s -i 

1, 0, 1, 1 






^ 










u^m 




k 






0, 1, 1,-1 














K-X^^fKJ 




l s 0,-1, 1 
















*^0 rrA) L-n 




0,-1, 1,-1 




w 




^ 








<w^ 




k 




















<^ 






enerator 




level 2 






level 3 (rounded corners) 



These two specimens resolve to the same general shape, as indicated by the illustration below. 




86 



Given the same generator, with alternate flippings, we get two gridfillers with very craggy boundaries: 



interval length = V5~ fractal dimension = 2.0 




^uare grid 
segments 

;gment values: 

0, 1, 1, 1 

1, 0,-1,-1 




§^% 


0, 1, 

1, o, 
0,-1, 


-1,-1 
1, 1 


^ 


, 4|J> ^ 




> 


) gener* 


rtor 


level 4 (rounded corners) 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 

0, 1,-1, 1 

1, 0, 1,-1 

0, 1,-1, 1 

1, 0, 1,-1 
0.-1,-1, 1 ^ 




generator 



level 4 (rounded corners) 



With other changes in flippings, we get the following gridfillers: 



interval length = V5~ fractal dimension = 2.0 




^uare grid 
segments 

;gment values: 

0, 1, 1,-1 

1, 0,-1, 1 


^ 


% 


0, 1, 

1, o, 
0,-1, 


1,-1 

-1, 1 

1,-1 


k 

> 


%Wp 






generato 




level 4 (rounded corners) 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 



0, 1,-1,-1 

1, 0, 1, 1 

0, 1,-1,-1 

1, 0, 1, 1 
0,-1,-1,-1 



generator 




In that last one, notice how the conifer tree-like spike at the upper-right corresponds to the empty gap at the bottom, 
rotated by 90 degrees. My brain is pertiling! 



87 



Here are two plane-filling curves of the V5 family that use a common generator shape. 











interval length = Vs~ 


fractal dimension = 2.0 


Square grid 
5 segments 








^\ 






;gment values: 
0, 1, 1,-1 

0, 1,-1, 1 

1, 0, 1,-1 
1, 0,-1, 1 
0,-1, 1,-1 




^ 






o? 


v 1 




> 


< 












^ 








generator 




level 2 




level 4 (rounded corners) 











interval length 


= vr 


fractal dimension = 2.0 


Square grid 
5 segments 
















;gment values: 
0, 1, 1, 1 
0, 1,-1,-1 




w 














^ 




1, 0, 1, 1 


















1, 0,-1,-1 


















0,-1, 1, 1 




f 


f 












4 
































generator 




level 2 






level 4 (rounded corners) 



That last curve can be combined with a 
180-degree flipped copy of itself to make 
the shape of the 5-Dragon. . . 




This next curve is a self-avoider. It is followed by a similar specimen. 











interval length 


= vr 


fractal dimension = 2.0 


Square grid 
5 segments 

segment values: 
1: 1, 0, 1,-1 
2: 0, 1, 1,-1 
3: 0, 1,-1, 1 
4: 1, 0,-1, 1 
5: 0,-1,-1, 1 




^ 


k 


level 2 






level 4 (rounded corners) 


1 


y ' 


generate 


r 



interval length = VT" fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 

1 

2 

3 

4 

5 



1, 0,-1,- 
0, 1,-1,- 

0, 1, 1, 

1, 0, 1, 
0.-1. 1. 





generator 



level 2 



level 4 (rounded corners) 



Each of these last two curves can be copied four 
times - each copy rotated 90 degrees - and 
joined together to make a continuous curve. The 
overall shape is a replica of the Quartet (one of 
them is a mirror-image of the other). This 
appears to be a property of many V5 curves I 
have shown. 




89 



There are no J6 plane-filling curves within my scheme! Why? Well, I can tell you this: it has something to do with the 
grids. Here's that illustration I showed you earlier: 



r 



A 



©- 



/ 



V3" 



/ 



\ 



Vio 



V13" 



V9" 



ongin y7" ^~ 

An uninspiring answer to the question (why no ^6?) is that there are no grid points on either a square or triangular grid 
whose distance to the origin is V6. 1 could just leave it at that, and say "let's move on", but I seek a deeper answer. Notice 
also that there is no square root of 11 distance either. There is also no square root of 14 distance. The list continues in a 
way that is reminiscent of the erratic series of prime numbers. 

In the case of the square grid, the answer is simple: each of these distances is the sum of two squares. Look no 
further than the Pythagorean theorem to see why this is so. But when considering the triangle grid, it is a little less 
obvious why we should end up with the set: VI, V3, V4, V7, V12, V13, etc. I shall leave this question open for you to explore 
on your own. Also, did you notice? ...there are two V13 distances - one on the square grid and one on the triangular grid. 
What's up with that? 

Now, I must admit: earlier I claimed that all plane-filling curves have interval lengths that fall between grid 
points of either the square or triangular grids. But I cannot say for sure that this is true. It may be that any number of 
generators with arbitrary interval lengths can yield plane-filling curves (although they may evade simple mathematical 
analysis). I leave it up to you, dear reader /viewer /thinker, to give me an inspiring answer. You can always find me at 
Tef f r ey @ Ventr ella . com . Okay, Fm afraid I am going to have to say, "let's move on now". . .to the awesome V7 family. 



90 



Now we can add a new specimen to the Ter Dragon and the 5-Dragon to make a nice neat trio of prime number 
palindrome dragons. It is the 7 -Dragon. These three curves have a few things in common: (1) they are all palindromes; (2) 
they require no segment flippings; (3) they represent the first three odd numbers (other than 1); and (4) they are all 
gridfillers. One difference is that the 7-Dragon is rather fat compared to the other two, and it is not as rough around the 
edges, so it may not qualify as a true "dragon". It also cannot be converted into a pinched-waist specimen by way of 
flipping the x values of its generator segments. Clearly, the 7-Dragon has a bit of a weight problem. Here it is: 



7-Dragoi 



interval length = V7~ 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 

1, 0, 1, 1 

-1, 1, 1, 1 

1, 0, 1, 1 

0,-1, 1, 1 

1, 0, 1, 1 

-1, 1, 1, 1 

1, 0, 1, 1 



5S 





generator 



level 2 



level 3 (rounded corners) 



I found a variation on the 7-Dragon generator that traverses the same 
segments, only in a different order. The diagram at right reveals this 
difference by way of rounding the corners of the generator. This 
alternate 7-Dragon is shown on the next page. 




91 



interval length = V7~ fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



1, 0,-1, 1 

1, 0,-1, 1 

-1, 1, 1,-1 
0,-1,-1, 1 

-1, 1,-1, 1 

1, 0, 1,-1 

1, 0, 1,-1 



xzr 



generator 




_S 




level 2 



level 3 (rounded corners) 



Here is a color rendering, with rounded corners, showing how the curve is a boundary between two domains: 




92 



Here is yet another variation on the 7-Dragon: 



interval length = V?~ 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



1, 0, 1, 1 

1, 0,-1,-1 

-1, 1,-1,-1 



4: 0,-1,-1,-1 

-1, 1, 1, 1 

1, 0,-1,-1 

1, 0, 1, 1 



ES 





generator 



level 2 



level 3 (rounded corners) 



Now, here is a strange specimen. I wouldn't normally include a self-crossing fractal curve in this book, but this variation 
on the 7-Dragon is irresistibly clever in it self-crossing: 



interval length = V?~ 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 
1, 0,-1,-1 
0,-1,-1 
1, 1, 1 



1, 
-1, 



4: -1, 0,-1,-1 
1,-1,-1,-1 
6: 0, 1, 1, 1 
7: 1, 0,-1,-1 



5S 





generator 



level 2 



level 3 (rounded corners) 



On the next page is a diagram that shows the progression of this fractal curve. As usual for a gridfiller (or, in this case a 
self-crossing gridfiller) I render it with rounded corners. For this illustration, I filled-in parts of it with color, to show how 
regions percolate into ever-complexifying domains. 



93 






Notice how the crossings accumulate with each level. In level 1 (upper-left) there is one crossing, which forms a closed 
region shown in yellow. In level 2 (upper-right) there are 7 small-loop crossings that form closed regions colored in red, 
and one larger-scale crossing (leftover from level 1, shown in yellow). In level 3 (bottom) there are 49 small-looped 
crossings that form closed off regions colored in blue. The remaining yellow and red regions have become more 
convoluted. I would assume that with each continuing level of fractalization, the remaining regions would stay 
topologically whole yet more convoluted, and that the self-similarity of clusterings would continue at each level of detail. 



94 



Now it is time to visit one of the most famous plane-filling curves of all: the Gosper Curve, a truly splendid self-avoider. 



Gosper Curve 








interval length = V?~ 


fractal dimension = 2.0 


Triangular grid 
7 segments 

segment values: 


w 


w 


level 2 




level 3 


1 


1, U, 1, 1 

0, 1,-1,-1 
-1, 0,-1,-1 
-1, 1, 1, 1 

1, 0, 1, 1 
1, 0, 1, 1 
1,-1,-1,-1 


\ . 


A 








generator 




The Gosper curve is named after William Gosper 
[7]. It fills a roughly hexagonal region, which 
Mandelbrot called "Gosper Island". The shape of 
the Gosper Island will be popping up throughout 
our exploration of this family. Here's one 
example: three 7-Dragons can be combined to 
form a shape of the Gosper Island. 




95 




It is a source of frustration for geometers that hexagons do not 
tile recursively, like squares and triangles. In other words, they 
are not rep-tiles. But the Gosper Curve defines a series of 
seven tiling regions that are all similar to the whole. So it gets 
around this problem... that is, if you don't mind having 
hexagons with craggy boundaries. 

Here is something I call the "Inner-flip Gosper". It has each of the x-values flipped, and so it creates a different character 
to the way the fingers curl to fill up the Gosper Island. Counting up the fractal levels, the direction of the curl reverses. 





Inner-flip Gosper 






interval length = VT~ 


fractal dimension 




Triangular grid 

7 segments 

segment values: 


^ ^ 


level 2 




level 3 




1 


0, 1, 1,-1 
-1, 0, 1,-1 
-1, 1,-1, 1 

1, 0,-1, 1 
1, 0,-1, 1 
1,-1, 1,-1 


^ A 


„ / 






generator 





Gosper 



Inner-flip Gosper 



96 



The diagram at the right was created by Fukuda, et. al [4] to show a 
generalized scheme for constructing Gosper-like Curves. It can be 
described as a triangular checkerboard, where each gray triangle stands 
for a hexagonal tile. Now, keep these triangles in your mind as I show 
you a variation of the Gosper Curve's generator that I discovered. I call it 
"Anti-Gosper". Normally, the Gosper Curve is a happy self-avoiding 
curve. But I have seen the Gosper Curve when it is in a bad mood. When 
this happens, it flips three of its segments, causing its fractalized teragon 
to become a shriveled-up triangle. The Anti-Gosper is edge-touching, in a 
rather anti-social way. 





Anti-Gosper 






interval length = V7~ 


fractal dimension = 2.0 




riangular grid 
segments 

;gment values: 
1, 0, 1, 1 

0, 1, 1, 1 
-1, 0,-1,-1 
-1, 1,-1,-1 

1, 0, 1, 1 
1, 0,-1,-1 
1,-1,-1,-1 


w 


level 2 




level 4 


N >\ 




J 






generator 



Here is a diagram illustrating the transformation from Gosper to Anti-Gosper, where the checkerboard of triangles 
collapses in on itself, leaving no gaps. 

-* ^ 




5^ 





The Anti-Gosper essentially transforms the Gosper curve from a hexagon-like tiling fractal to a triangle-like tiling fractal. 



97 



The overall shape of the anti-Gosper can be created by another generator, shown here: 



interval length = V?~ 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



0, 1,-1,-1 
-1, 1,-1,-1 

1, 0, 1, 1 
0,-1, 1, 1 
1, 0,-1,-1 
0, 1, 1, 1 
1,-1,-1,-1 






generator 



level 2 



level 4 



This specimen is shown below with rounded corners. 
You can easily see that this plane-filling curve is self- 
contacting in such a way that rounding the corners is 
not sufficient to separate-out the touching parts. 




However, it does make a fine jigsaw puzzle :) 




98 



Node Gosper 



Remember the node-replacement curves 
I showed you earlier? Well, after 
discovering that any fractal tiling could 
be used as the basis for a node- 
replacement curve, I realized that the 
Gosper curve would qualify. So here is a 
picture I drew of a variant of the Gosper 
curve, which I call "Node Gosper". 
Instead of the segments of the generator 
spanning between two corners of each 
hexagonal tile, they connect at midpoints 
of neighboring hexagonal tiles. 

Just for fun, I did a drawing of 
the second teragon of a node Gosper, and 
rendered the connective tissue with pink 
lines. Did you notice that fractal curves 
generated with node replacement are not 
strictly self-similar? The extra connective 
lines create slight differences in the 
internal shapes. In this example you can 
see the slight variations among the 
bumps. These variations accumulate 
progressively with each teragon. 




Gosper Curve Node-Gosper Curve 

(edge-replacement) (node replacement) 




99 



The V7 family is genetically imbued with a talent for clever self -crossing. Let me show you another variation of a self- 
crossing 7-dragon, followed by a colorful self-crossing Gosper Island made by combining three copies (below at left). 



interval length = V7~ 



fractal dimension = 2.0 



1, S 1, 1 



Triangular grid 

7 segments 

segment values: 

1: 

2: 

3: 

4: 

5: 

6: 

7: 



1, 1, 1 

0, 1, 1 

-1, 1, 1 

0, 1, 1 

1, 1. 1 
S 1, 1 



5£ 





generator 



level 2 



level 3 (rounded corners) 




I have just shown you several variations of the 7- 
Dragon. Each generator visits the same seven grid 
points, but they are each visited in a different order. 
Below is a diagram of four ways that the seven 
points can be visited. It uses the rounded (chopped- 
off) corners to help with readability. 




100 



Here is a V7 gridfiller, with a distinctive hook. It looks a bit like the Yin Dragon I showed you earlier of the V3 family. 
Below is a rendering, pertiled with a 180-degree flipped partner. The two mate to create a yin-yang 7-dragon: 



Root 7 Yin 



interval length = V7~ 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



1, 
1, 
-1, 
-1, 
1, 
1, 
0, 



0, 1, 1 
0,-1,-1 

1, 1, 1 
1,-1,-1 
0, 1, 1 
0,-1,-1 
■1, 1, 1 




generator 





level 2 



level 4 




^WW 






aaJ 



viM 



/ 
/ 











/'S 




y^.y 














/»s* 






/ 






bV^-A 


/^A 1 . 






/ 


*s 


a/ 


vs* 




/ 








\*s*/ w 


\\A>\ 




Hr 








", /- 


y^y 












/V^" 








jS->S 














ivV 





101 



The profile of the 7-Dragon is similar to that of the Gosper Island - that is: the fat middle-section. As I mentioned before, 
the Gosper Island seems to pop up quite a bit in this family. Here is a curve that shows a bit of that profile (but only in 
certain parts). 



interval length = V7~ 



fractal dimension = 2.0 



T 


riangular grid 


7 segments 


segment values 


1 


0,-1, 1,-1 


2 


1, 0,-1, 1 


3 


1. 0, 1,-1 


4 


-1, 1,-1, 1 


5 


-1, 1, 1,-1 


6 


1, 0,-1, 1 


7 


1, 0, 1,-1 



L 




generator 





level 2 



level 4 



Here is a curious specimen. The main part of its body looks like a Gosper Island, but it is partly-eroded. And right below 
the eroded part is a 7-Dragon - tethered to its body. 



Partia l Gosper Towing Dragc 



interval length = VT~ 



fractal dimension = 2.0 



Triangular grid 

7 segments 

segment values: 



0, 1,-1 
0,-1, 1 

0, 1,-1 
0,-1, 1 

1, 1,-1 
1,-1, 1 

-1, 1,-1 





generator 



level 2 



level 4 (beveled corners) 



102 



I discovered a variation of the specimen I just showed you. After careful analysis, I have concluded that this specimen had 
made a valiant attempt to fill up the missing piece of its Gosper body. But unfortunately, it had spent too many of its 
segments on its tethered 7-Dragon. And in its failed attempt to fill its Gosper body, it left a series of Gosper-like holes. 



interval length = V7~ 



fractal dimension = 2.0 



T 


riangular grid 


7 segments 


segment values 


1 


1, 0, 1, 1 


2 


1, 0,-1,-1 


3 


1, 0, 1, 1 


4 


1, 0,-1,-1 


5 


-1, 1, 1, 1 


6 


~ll 1,-1,-1 


7 


0,-1, 1, 1 





generator 



level 2 



level 4 (beveled corners) 



Below at left is a rendering of this specimen with regions colored to illustrate the Gosper pieces. Now, do you want to see 
what it looks like when two of these specimens mate? It is shown below at right. Don't try to wrap your whole brain 
around this one - you might get a headache. 




103 



The Gosper profile shows up again in these two variations on one generator. They both have a rather jaggy inner-texture. 
You can see in the level 2 teragon below that these shapes are still quite similar. But at level four, it becomes clear that the 
second specimen has two spiraling hooks. This specimen is shown below with a few rep-tiling themes. 













interval length = V7~ 


fractal dimension = 2.0 


Triangular grid 

7 segments 

segment values: 


£ 






level 2 




level 4 


1 


1. 0,-1, 1 
1, 0, 1,-1 
1, 0,-1, 1 

-1, 1,-1, 1 
-1, 1, 1,-1 

1, 0, 1,-1 


, \ 


r 








generator 





interval length = VT~ fractal dimension = 2.0 



T 


riangular grid 


7 segments 


segment values 


1 


0,-1, 1, 1 


2 


1, 0, 1, 1 


3 


1, 0,-1,-1 


4 


1, 0, 1, 1 


5 


-1, 1, 1, 1 


6 


-1, 1,-1,-1 


7 


1, 0,-1,-1 



u 





generator 



level 2 



level 4 






104 



Gosper profile cleverness abounds: This specimen is pertiled 6 times to form a closed Gosper Island. 



interval length = VT~ 



fractal dimension = 2.0 



Triangular grid 

7 segments 

segment values: 

0, 1, 1, 1 
-1, 1, 1, 1 

1, o, 1, 1 
0,-1, 1, 1 

1,-1, 1, 1 

1, 0, 1, 1 
0, 1, 1, 1 






generator 



level 2 



Ievel3 (rounded comers) 




105 



The two specimens below create variations on a "Gosper Hill", covered with lush vegetation, shown below: 



interval length = V? - 



fractal dimension = 2.0 



Triangular grid 

7 segments 

segment values: 



, 1,-1,-1 

, 0, 1, 1 

, 1,-1,-1 

, 0, 1, 1 
t 0, 1, 1 

,-1,-1,-1 

, 0, 1, 1 



<"- 





generator 



level 2 



level 3 (rounded corners) 



interval length = V7~ 



fractal dimension = 2.0 



Triangular grid 

7 segments 

segment values: 

1: 

2: 

3: 

4: 

5: 

6: 

7: 



-1, 1, 1,-1 

1, 0,-1, 1 

-1, 1, 1,-1 

l s 0,-1, 1 

1, 0,-1, 1 
0,-1, 1,-1 

1, 0,-1, 1 



v 



r^ 





generator 



level 2 



level 3 (rounded corners} 




106 



Here are two flip- variations of a generator. They are gridfillers. The second one is shown below with an enlarged area. 



interval length = VT~ 



fractal dimension = 2.0 



Triangular grid 


7 segments 


segment values 


1 


1, 0, 1, 1 


2 


0,-1, 1, 1 


3 


1, 0, 1, 1 


4 


-1, 1, 1, 1 


5 


-1, 1, 1, 1 


6 


1, 0, 1, 1 


7 


1, 0, 1, 1 






generator 



level 2 



level 3 (beveled corners) 



interval length = V7~ fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



1, 0,-1,-1 



-1,-1,-1 
0,-1,-1 
1,-1,-1 
1,-1,-1 
0,-1,-1 
0,-1,-1 






generator 



level 2 



level 3 (beveled corners) 




107 



Here are two specimens based on a common generator shape. 



interval length = V?~ fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



-1, 1,-1, 1 

1, 0, 1,-1 

1, 0,-1, 1 
0,-1, 1,-1 

1, 0, 1,-1 

1, 0, 1,-1 

-1, 1,-1, 1 



V7J 




generator 



level 2 



level 3 (rounded corners) 



interval length = V7~ fractal dimension = 2.0 




riangular grid 
segments 

;gment values: 

-1, 1, 1, 1 

1, 0, 1, 1 

1, 0,-1,-1 

-l -l -l 


w 


r 


\ 


level 2 


level 3 (rounded corners) 


l! 0, 1, 1 )\ 
1, 0, 1, 1 
-1, 1, 1, 1 


\ 7 






generator 








108 



Here is a highly craggy specimen. It is shown below in a 3-way pertiling. 



interval length = V? - 



fractal dimension = 2.0 



Triangular grid 


7 segments 


segment values 


1 


-1. 1, 1,-1 


2 


-1, 1,-1, 1 


3 


1, o, 1,-1 


4 


1, 0,-1, 1 


5 


1, 0, 1,-1 


6 


1, O s -l s 1 


7 


0,-1, 1,-1 





generator 



level 2 



level 4 




109 



This self-crossing curve is quite interesting. Below is a rotated rendering of teragon 4. 



interval length = V?" 



fractal dimension = 2.0 



Triangular grid 

7 segments 

segment values: 



1,-1,-1,-1 

1, 0, 1, 1 

0,-1, 1, 1 

-1. 1, 1, 1 

0, 1,-1,-1 

1, 0, 1, 1 
0, 1,-1,-1 






generator 



level 2 



level 3 ( rounded corners) 



holes 




On the next page I show something about this curve that 
I had not initially expected. This may not come as such a 
surprise to you, after having seen several specimens. 
When I first drew this curve, I noticed that the holes in 
the shape corresponded to the nodes. Could it be that the 
nodes could fit into the holes? 

So I decided to try some pertiling: I made a copy 
and rotated it by 120 degrees (knowing that this is a 
triangle-grid specimen). And lo and behold, they fit 
together like peas in a pod (or several peas in several 
pods). Then I wondered if the remaining holes might be 
filled by a third copy, rotated by -120 degrees. Imagine 
how excited I was when the three of these specimens fit 
together to form a Gosper Island! On the next page is a 
picture of this three-way mating. That's quite an 
intimate embrace! 



110 




Ill 



Next we come to the 48 family. This family has some things in common with the V2 family: the generator lies on a 45 
degree diagonal. Also, it can be seen as a superset of the V2 family (as well as the V4 square grid family). This is because the 
values 2, 4, and 8 are powers-of-two numbers (2 1 = 2; 2 2 = 4; 2 3 = 8). We will see later that the VI 6 square grid family is a 
superset of the V2, V4 square grid, and V8 families. 

We've already seen one member of the V8 family: I showed it to you at the beginning of the book as an example of 
how the turtle can use flippings to convert an otherwise self-crossing curve into a self-avoiding curve: 



;elf-av 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 



-1, 1,-1, 

0, 1, 1, 

1, 1, 1, 
1, 0,-1, 
1,-1, 1, 





generator 



level 2 



level 5 (rounded corners) 



When I showed this curve to you before, it was rotated 45 degrees. Here is it shown in its native familial orientation. 
Notice that the generator has only 5 segments, and that three of those segments have a length of V2. These segments are 
responsible for the three large lobes in the 2 nd teragon. 

As a general rule, you can consider segments of length 42 to count as two (remember that we square the lengths 
when calculating fractal dimension). So in this case, two one-length segments and three segments of V2 - when squared - 
add up to 8: the family number. 



112 



The ^8 family is quite versatile. First let's look at some curves that fill a right triangle. Two of them are shown below. Like 
the last curve I showed you, the generators for these curves each have 5 segments, three with a length of V2. 



interval length = Vl~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 

1 

2 

3 

4 

5 



1, 1, 1, 
1, 0, 1, 
0,-1,-1,- 

1, 1, 1, 
-1. 1. 1.- 






generator 



level 2 



level 4 (rounded corners) 



interval length = VI - fractal dimension = 2.0 



Square grid 
5 segments 


s< 

1 
2 

4 
5 


;gment values 
1. 1, 1, 1 
1,-1,-1,-1 
1, 1, 1, 1 
-1, 0, l s -l 
0, 1,-1, 1 






generator 



level 2 



level 4 (rounded corners) 



This last one is so interesting I decided to render it in color. It's shown on the next page. 



113 



ml 



fw , 



r&cs^n 



C£ BSSlSk 



mz&ss^^ 






S3£0£^\ 






Here's another triangle-shaped specimen. This one has even fewer segments: 4! One of the segments is length V2 and the 
last segment is length 2. Following the rule of squaring all lengths, as I said earlier, you can see how the sum is 8. Because 
of the long segment length, the result has a great variety of lengths within - with a lot of self-similar patterning. 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
4 segments 

segment values: 
1: 1, 0, 1,-1 
2: 0, 1,-1, 1 
3: 1,-1,-1,-1 
4: 0, 2,-1, 1 






generator 



level 2 



level 6 (rounded corners) 



114 



Fm particularly fond of this one. So I made a color rendering of it, and rotated it 90 degrees. It is shown below. 









interval length = Vs~ 


fractal dimension = 2.0 




^uare grid 
segments 

;gment values: 
1, 1, 1, 1 




A 




level 3 (rounded corners) 




0, 1, 1,-1 
-1, 0,-1, 1 

1, 1, 1, 1 
0,-1, 1,-1 
1, 0,-1, 1 


A 


<* A 


Z 

z 


\ 


" 


k 






genera 


tor 


level 2 




115 



Here are two more right triangles of the J8 family. These are a little less well-behaved, but interesting nonetheless. 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
6 segments 

segment values: 

1 

2 

3 

4 

5 

6 



1,-1,-1,- 
1, 1, 1, 
-1, 0,-1, 

0, 1, 1,- 

1, 0,-1, 
0. 1. 1.- 






generator 



level 2 



level 3 (rounded corners) 









interval length = Vl~ fractal dimension = 


= 2.0 


Square grid 
4 segments 

segment values: 
1: 0, 2,-1, 1 
2: 1,-1,-1,-1 
3: 0, 1,-1, 1 
4: 1, 0, 1,-1 






/1AK 


level 4 (rounded corners) 




> 


\ 


^* 


genera 


tor 


/ /< 

level 2 




116 



This next specimen is a natural self-avoider. It is a relative of a V4 specimen we met earlier. On the next page I show five 
more curves of this family. 











interval length = VW 


fractal dimension = 2.0 


Square grid 
5 segments 






S\ 








;gment values: 
-1, 1, 1, 1 

1, 1, 1, 1 
1,-1, 1, 1 
1, 0,-1,-1 
0, 1,-1,-1 


/V1 


) < 


f 


T? % 




\ 




generator 




level 2 




level 4 




117 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 

1 

2 

3 

4 

5 



1,-1, 1, 

0, 1,-1,- 
-1, 1, 1, 

1, 0,-1,- 
1. 1. 1. 




generator 



level 4 (rounded corners) 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
8 segments 

segment values: 

1 

2 

3 

4: 

5 

6: 

7: 

8: 



0, 1,-1,- 

1, 0, 1, 
0,-1,-1,- 
1, 0, 1, 
0,-1,-1,- 
1, 0, 1, 
0,-1,-1,- 
1. 0. 1. 



f I w d 

w 




generator 



level 3 (rounded corners) 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
8 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 

8 



0, 1, 1, 

0, 1,-1,- 

-1, 0, 1, 

0, 1, 1, 

1, 0,-1,- 
1, 0, 1, 

0,-1,-1,- 

1. 0.-1.- 



f 

1 

f 



generator 




level 3 

(rounded corners) 



interval length = Vs~ 



fractal dimension = 2.0 



Square grid 
8 segments 

segment values: 



1, 0, 1 

0, 1,-1 

-1, 0, 1 

0, 1,-1 

1, 0, 1 
0,-1,-1 
1, 0, 1 
0, 1,-1 



-1 . W 



generator 




level 3 (rounded corners) 



interval length 



vr 



fractal dimension = 2.0 



Square grid 


6 segments 


segment values 


1 


-1, 1,-1,-1 


2 


-1, 1, 1, 1 


3 


1, 0,-1,-1 


4 


1, o s 1, 1 


5 


i, 0,-1,-1 


6 


1, 0, 1, 1 






generator 



level 2 



level 5 



118 



That last curve fractalizes into a shape that 
is similar to the "Twin Dragon": the result 
of joining two HH Dragons. But notice 
that it is not quite the same as the Twin 
Dragon; it has pinched-off babies - which 
each have their own pinched-off babies. 




Twin Dragon 




This next curve fractalizes into a pair of Twin-Dr agon-like curves. Because of the similarity to the shape as the Twin 
Dragon, I call it the "Twin-Twin Dragon". Are the two twins holding hands? No; their babies are holding baby hands. 



Twin -Twin Dragoi 



interval length = Vl~ fractal dimension = 2.0 



Square grid 
6 segments 

segment values: 



0, 1 
0, 1 
1,-1 
1,-1 
0, 1 
0. 1 



1, 1 
1, 1 
1, 1 

-1,-1 
1, 1 

-1,-1 






generator 



level 2 



level 4 (rounded corners) 




Twin-Twin Dragon 




119 



Speaking of dragons, the ^8 family produces more dragons that are related to the HH Dragon. Here's one: 











interval length = VT" fractal dimension 




Square grid 
4 segments 

segment values: 
1: 0, 2, 1, 1 
2: 1,-1, 1, 1 
3: 1, 0, 1, 1 , 


N 






level 4 (rounded corners) 




W 


r 


Y/]< 


generator 






level 2 



Let's see it rendered at a higher level, below. To the right is the HH Dragon. 





120 



Here's another specimen that is related to the HH Dragon: 



I am impressed with how this curve is 
so unpredictable and irregular in its 
internal meandering, yet it is able to 
avoid any self-crossings (it does self- 
touch on vertices: those are separated 
due to the rounded-corners scheme of 
the drawing). Here is a rendering of two 
copies of this curve (one flipped 180 
degrees). They are combined to make 
the shape of the twin dragon - which 
closes the loop, enabling it to be filled 
internally with color. 











interval length = Vs~ 


fractal dimension = 2.0 




^uare grid 
segments 

;gment values: 

-1, 1, 1, 1 

1, 0, 1, 1 

0, 1,-1,-1 
1,-1, 1, 1 

1, 0, 1, 1 
1-1-1 






A , 


^ % 


level 3 (rounded corners) 


w 


\ 


^ 


M 


level 2 






\ 

generator 




3 




121 



Here's another specimen that resolves to the same shape as the HH Dragon. Since the generator has shorter segments in 
the middle region, the mid-sections of its tergaons are rather knotted, and full of detail. This specimen's teragons are 
precariously self-touching (even with rounded-corners). I have rendered it below, rotated 90 degrees. 











interval length 


= VT 


fractal dimension = 2.0 


Square grid 
4 segments 

segment values: 
1: 1, 1,-1,-1 
2: -1, 0,-1,-1 
3: 0, 1, 1, 1 
4: 2, 0, 1, 1 






w 


o 


\ 




level 4 (rounded corners) 


J 


w 




< 5\ 




/ 

generator 


level 2 




122 



Another V8 Dragon is shown below. This one also resolves to the shape of the HH Dragon. 



interval length = V! - fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 
1: 0, 2, 1, 
2: l s 0, 1, 
3: 0,-1,-1, 
4: 1, 0, 1, 
5: 0, 1,-1, 





generator 



level 2 



level 3 ( rounded corners ) 



Here it is fractalized at a higher level, splined, colorized, and slightly rotated... for your brain-filling pleasure. 




123 



Here is a self-avoiding dragon that I was excited to discover. It appears to be a relative of the Dragon of Eve. It's like 
adding a smaller triangular bump onto the big triangular bump of the Dragon of Eve. It's like a curly Dragon of Eve! 



Curled Dragon of Eve 



interval length = Vl~ 



fractal dimension = 2.0 



Square grid 
5 segments 

segment values: 
1: -1, 1, 1, 1 
2: 0, 1, 1, 1 
3: 1,-1, 1, 1 
4: 1, 0,-1,-1 
5: 1, 1,-1,-1 






generator 



level 2 



level 4 (rounded corners) 




124 



There is one last fractal I want to show in the ^8 family: I call it "Brainfiller". Below it is colored and rotated. 



Brainfiller 








interval length = VT" fractal dimension 






^uare grid 
segments 

;gment values: 

0, 1,-1, 1 

1, 0, 1,-1 
0,-1,-1, 1 
1, 0, 1,-1 
0, 2, 1,-1 










k 


level 2 


> 9^% 

level 4 (rounded corners) 






> 


** 


k 








genera 


tor 


r 






125 



The V9 square grid family has many interesting plane-filling curves. The square root of 9 is of course 3. And, being an 
integer, my scheme places the interval length horizontal, stretching across three grid cells. We already encountered one 
member of this family early on when I showed you the Koch curve: its friend, the Square Koch. Here is its diagram: 



Square Kocl 



interval length = V9~ fractal dimension = 1.4649736 



Square grid 
5 segments 

segment values: 



1, 0, 1, 

0, 1, 1, 

1, 0, 1, 
0,-1, 1, 
1, 0, 1, 



yv 



r ^ 



generator 



_ra ETL 

level 2 




level 4 



Now let's add a floor and a basement to this generator and see what happens. Lo and behold, we get one of the most 
familiar - and oldest - plane-filling curves of all time: the "Original Peano Curve" (as Mandelbrot called it: Giuseppe 
Peano explored many variations). Rounded corners help a lot when viewing this curve. 



Original Peano Curve interval length = V9~ fractal dimension = 2.0 


Square grid 
9 segments 

segment values: 


w 










1 


1, U, 1 

0, 1, 1 

1, 0, 1 
0,-1, 1 

-1, 0, 1 
0,-1, 1 
1, 0, 1 

0, 1, 1 

1, 0, 1 


4 




































' w 
















— O ?.0 ?.rfO J .*Oj .jO Q.-0 CVOO -O O jO„ 


1 


^ 4 


















OiLOnLC/i ijji CC^CCj^LO^lC/^ CC/ 


































genera 


tor 


le 


ve 














level 3 (rounded corners) 



126 



Here is a variation that fills the same area as the original Peano curve, but the shape it fills is a right triangle: 



interval length = V9~ fractal dimension = 2.0 


9 


^uare grid 
segments 

;gment va 
1, 0, 1 

0, 1,-1 

1, 0, 1 

0, 1,-1 

1, 0, 1 
0,-1,-1 

-1, 0, 1 
0,-1,-1 
1, 0, 1 


lues: 




A 




w 






doS^c£feSLr^ra 


-1 


f 










~^\ ^^^sg^^g^y^Qw 












m^ /\a^ /^cvp /: 


-1 


^ 














^] ^/^oS^CrcQ^S^^^^rc 




4 

r 
















J2 n^Q^S^^q^iS&p^S 


















Zl C^^S^ra^^&^^C^^^ 




^ 


leve 














^&^Q^^^u%^&&^0^ 






genera 


tor 
















level 3 (rounded corners) 



And here is a familiar theme once again: a generator shape can be made to create either a right triangle or a dragon, by 
way of alternate flippings. This variation is like a dragon (okay, maybe it's not like a dragon... let's just go with // jaggy ,/ ). 



interval length = V9~ fractal dimension = 2.0 



Square grid 
9 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 

8 

9 



1, 0,-1,- 

0, 1, 1, 

1, 0,-1,- 

0, 1, 1, 

1, 0,-1,- 
0,-1, 1, 

-1, 0,-1,- 
0,-1, 1, 
1. 0.-1.- 



r 



re 



a 




generator 



level 2 



level 3 (rounded corners) 



127 



Where there be dragons... there be castles. The V9 Castle below is filled with holes... holes of all sizes. It is a holey castle. 
No surprise: its fractal dimension is only -1.77. 



Holey Castle 



interval length = V9~ fractal dimension = 1.7712437 



Square grid 
7 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 



0, 1,-1,- 

1, 0, 1, 

0,-1,-1,- 

1, 0, 1, 

0, 1, 1,- 

1, 0,-1, 
0.-1.-1.- 



4 K 4 

f ^ 



5 



ETL_m 




generator 



level 2 



level 4 



The Holey Castle is related to a large class of fractals that are riddled with holes, such as the Sierpinski Triangle and the 
Sierpinski Carpet (and their 3D counterparts: the Tetrix and the Menger Sponge): 




128 



Remember the variation of Cesaro's Sweep I showed you from the V4 family? It has a double-sided vertical needle. Well, I 
wondered if there might be something similar in the V9 square grid family . . .and I came up with the generator below. 
Like Cesaro's Sweep, this curve is everywhere edge-self-touching except for the bottom edge. But unlike Cesaro's Sweep, 
it has a wonderful fractal boundary. Its 4 th teragon is shown below at right. Rounded corners help only slightly to reveal 
the curve's trajectory. 



interval length = V9~~ 



fractal dimension = 2.0 



Square grid 
9 segments 



segment values: 
1: 1, 0, l s 

0, 1, 

0, 1, 
0,-1, 1, 
0,-1, 

1, S 
7: 0, 1, 
8: 0,-1, 
9: 1, 0, 



4 

f 
4 



generator 




Below is an intriguing fractal curve of dimension -1.77. 



interval length = V9~ fractal dimension = 1.7712437 



Square grid 
6 segments 

segment values: 

1 

2 

3 

4 

5 

6 



1, 0,-1, 

0, 1, 1, 

1, 0,-1, 
-1,-1,-1,- 

1, 0,-1, 
1. 0.-1. 



t 



z 



generator 



k 




ji. 




z fi /z_Loz_ 



level 2 



level 3 (rounded corners) 



129 



Here are two gridfillers based on a common generator: 



interval length = V9~ 



fractal dimension = 2.0 



Square grid 
9 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 

8 

9 



-1, 0, 1, 

0, 1,-1,- 

1, 0, 1, 

0, 1,-1,- 

1, 0, 1, 

0,-1,-1,- 
1, o, 1, 
0,-1,-1,- 

1. 0. 1. 




generator 



level 3 (rounded corners) 



interval length = V9~ 



fractal dimension = 2.0 



Square grid 
9 segments 

segment values: 



-1, 
0, 
1, 
0, 
1, 
0, 
1, 
0, 
1, 



0,-1, 
1, 1, 
0,-1, 
1, 1, 
0,-1, 
■1, 1, 
0,-1, 
■1, 1, 
0,-1, 




level 3 (rounded corners) 



generator 



The sepcimen below has a generator with a 2-length segment corresponding to a 2x2 square (shown in 
purple at right). It has a lot of self-touching edges, and so I used the low-pass smoothing filter to 
render level 5 with filled-in areas to show the interesting self-similarity. 



r 



i 



interval length = V9~ fractal dimension = 2.0 

Square grid 
6 segments 

segment values: 



0, 2,-1 

1, 0, 1 
1, 0, 1 
1, 0, 1 
0,-1,-1 
0,-1,-1 



generator 





We are about to explore one of the most versatile, fertile, and abundant families of plane-filling fractal curves: the V9 
triangle grid family. The first specimen to mention is none other than... the Koch Curve! Yes, our old friend Koch lives in a 
triangular grid, and its interval length is 3 units long. The Koch curve has many cousins, and youTl see some similarities. 



Koch Curve 






interval length = V9~ 


fractal dimension = 


1.2618595 


Triangular grid 
4 segments 














;gment values: 
1, 0, 1, 1 

0, 1, 1, 1 
1,-1, 1, 1 

1, 0, 1, 1 








jaAa? W^jl 






. .A 


^ 


^w Ia 


_ ^j\a? \aJ\a 


F \yj 


<La^ 








generator 




level 2 


level 4 







What happens if you draw the first three segments of the Koch Curve and then 
instead of heading straight to the end, you flip back and draw the remainder as 
a reflected Koch? Well, here's what you get. 




.^2 



& 



Reflected Koch 



interval length = V9~ 



fractal dimension = 1.7712437 



Triangular grid 
7 segments 

segment values: 



1, 0, 1,-1 
0, 1,-1, 1 
1,-1,-1, 1 
-1, 0,-1,-1 
1,-1, 1, 1 

0, 1, 1,-1 

1, 0, 1,-1 






generator 



level 2 



level 3 (rounded corners) 



131 



With this curve, which I call "Reflected Koch", the fractal dimension goes 
up to -1.77, since it has 7 segments instead of 4. Below is a table showing 
these two curves, and one other member of the V9 triangle grid family. You 
can see that the reflected Koch has obvious similarities to the Koch Curve, 
having the same profile reflected on top and on the bottom. The curve 
shown at the bottom does not have the same profile: its generator has a 
triangle balanced upside-down on top of the Koch bump: it fractalizes 
upward to make a triangle-shaped conifer tree with a lovely Koch 
Snowflake inside (shown at right). I call it "Koch Holiday Tree". 




generator 



level 2 



level 3 

(rounded corners) 



interval length = 3 

num segments = 4 

dimension = 
1,2618595 



_A 




interval length = 3 

num segments = 7 

dimension = 
17712437 






interval length = 3 
num segments = 7 

dimension = 

1.7712437 






132 



Now, taking the Koch Holiday Tree generator, let's add a triangular bump at the left, and try a few variations in flippings. 
Here are two results: 



interval length = V9~ 



fractal dimension = 1.8927892 



Triangular grid 
8 segments 




level 3 (rounded corners) 



interval length = V9~ 



fractal dimension = 1.8927892 



Triangular grid 
8 segments 

segment values 

1 

2 

3 

4: 

5 

6: 

7: 

8: 



0, 1,-1,-1 
1,-1, 1, 1 

0, 1,-1,-1 
-1, 1, 1, 1 

1, 0,-1,-1 
0,-1, 1, 1 
1,-1, 1, 1 
1, 0, 1, 1 




generator 




level 3 (rounded corners) 



Notice that the fractal dimension has gone up to -1.89. It seems we are getting close to filling a triangle, but there are still 
holes. One more variation, with some clever flippings brings the total number of segments to 9. Tada - we have a plane- 
filling curve! 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
9 segments 

segment values: 



1, 0, 1, 1 
-1, 1,-1,-1 
1, 0, 1, 1 
-1, 1,-1,-1 
1, 0, 1, 1 
0,-1, 1, 1 
1,-1,-1,-1 
0, 1, 1, 1 
1,-1,-1,-1 



A 



generator 






level 2 



level 3 (rounded corners) 



This is shown in higher resolution with rounded corners and filled-in, on the next page. 



133 



X 



x 



3& 



Jl?l 



viSobb 



Si 






J O o ^b O VJ ^C • 



;< WXX 

3^j Xo-bb cxbX cx_n oJl csSCq~~S( csSl 
3 XX 13 33. 3 3, 3D 3 3, 3 L, 3 3, 3 

r 3d 33d bbo 33d Ct3d 33d 33d d\3d3^ 



SUd< 



c- 



OQ^( 



' ' L C 3 C L L U C C . 

, ^w, _, o^Xr^ ir^ X"bXX^ >r- 
^IcXXb XXX^q^XviXS " 



X^5}^ 
3 ; j s^o Jr'o" Jr'S Vn" J e'er i c^^S^oOo r>X cS 

X XXXxXX 33 3313 S) 33 XXXX CX> 0^ 
nX XSO Xbb" 1 S X~^ XX 3 XI c n? XX 3 SO r n r XX XI c S 

bbb>bXXXXXXXXXX~ -■ - - ■"■'" 





b 

rX 



^Wl 



- 



QoX CsJ 



, CO L CO C 0^ b O-bl, CsX 



r xX Xi xxv^r 



q^pq^pq^vp 



xs xs x> 

)3 ^ o XX 



OcO-bc- 






r<~>^n 



^bbcb^bbOVlbXr 



^3D^ 






%XbBb^bffib 

-^ X XnX Xi X, oX-rb^ X-XO^^X^XX^Xi XXb 5 <- 

XXb XXbbbbb X ^ ^ XXXr 
" r bX^bJX^ 



U i 



vP-^) r ro 0-m 33^o c cssJo-n J-Pvd <L G 



' ' " X_b c 



X 



ebb 



)L 0^Mb^i^b5i^ 



,-bXc 






<x Xx^^^x ( 



XXbXb X XXXXX : - -"- " : - -■"'-" : - -■ 



xx?x?xx?x?xx?x?x^ 



DD^rD Dr^jDj Dr^_rD C-v_^C) f 



3 Dr^_rD Dn^rD 



d33d< 



iDJii 



^VP ! 



DD^D) Dn-^DD D~^_rD D\_rD DD^DD 



134 



Can a generator with fewer than 9-segment be used to fill a triangle? Sure thing. But at least one segment has to be longer 
than 1. This next specimen has a generator with 6 segments, and one of those segments has a length of V3. I call it 
"Sawtooth". As you would expect, the process by which the triangle gets filled is less regular than with the last specimen. 



Sawtooth 



interval length = V9~ 



fractal dimension 




Triangular grid 
6 segments 

segment values: 



0, 1, 1 
1,-1,-1 
0, 1, 1 
1,-1,-1 
0, 1, 1 
-2, 1,-1 



f 




generator 



level 2 



level 3 (rounded corners) 




135 



This specimen cannot plane-fill the triangle: its dimension is only ~1.77 



interval length = V9~ 



fractal dimension = 1.7712437 



Triangular grid 
4 segments 



segment values: 




generator 




This specimen is a plane-filler. It is a relative of the Koch Holiday Tree I showed you earlier. I call it "Plane-filler Holiday 
Tree". Strangely enough, this one fills the triangle but it also dips down into the soil - perhaps to nourish its leaves. 



Plane-filler Holiday Tree 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
5 segments 

segment values: 



1, 1,-1,-1 
-1, 1, 1, 1 
1, 0,-1, 1 
0,-1,-1, 1 
2,-1, 1,-1 




generator 



level 2 





level 4 (rounded corners) 



136 




137 



This one is related to the plane-filler Holiday tree. It has a stylish asymmetric flair. 



interval length = VW fractal dimension = 1.8927892 

Triangular grid 
6 segments 



segment values: 



1, 0,-1, 

0, 1,-1, 
-1, 1, 1, 

1, 0, 1, 
0,-1, 1, 



2,-1, 1,-1 




generator 




level 3 (rounded corners) 




Now let's come back to the Koch Curve and 
explore a variation of the generator in which the 
triangular bump is turned unto a full triangle, 
and tilted up on its vertex, to make the following 
generator: 






138 













interval length = V§~ fractal dimension 






ri angular grid 
segments 

;gment values: 

1, 0, 1, 1 

-1, 1, 1, 1 

1, 0, 1, 1 

1 -1 ! l s 1 
1, o s 1, 1 
1, 0, 1, 1 


w 


w 


WW 

level 2 


♦su. 


level 3 (beveled corners) 






g 


V. 




enerator 





Here's what happens if we use the same generator shape and fiddle with the flippings: 



interval length = V9~ fractal dimension = 1.6309297 



Triangular grid 
6 segments 

segment values: 
1, 0, 1, 1 
-1, 1, 1, 1 
1, 0,-1, 1 
0,-1, 1,-1 
1, 0,-1, 1 
1, 0, 1, 1 



_SZ 



generator 



WvTv V 




level 2 



level 3 (rounded corners) 



Now, if we make a reflection of this triangle underneath the horizontal line, and use no flippings, we have a gridfiller! 



interval length = V9~ fractal dimension = 2.0 



Triangular grid 

9 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 

S 

9 



1, 0, 1 

-1, 1, 1 

1, 0, 1 

0,-1, 1 

0,-1, 1 

1, 0, 1 

-1, 1, 1 

1, 0, 1 

1. 0. 1 





generator 



level 2 




level 3 (rounded corners) 



139 



And, what if we shift that lower triangle to the right? Here's what we get: 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
9 segments 

segment values: 



1, 0, 1, 1 

-1, 1, 1, 1 

1, 0, 1, 1 

0,-1, 1, 1 

1, 0, 1, 1 

0,-1, 1, 1 

1, 0, 1, 1 

-1, 1, 1, 1 

1, 0, 1, 1 



52 



X 




generator 



level 2 




level 3 (rounded corners) 



Did you notice something? This has the same shape as the pinched Ter-Dragon of the V3 family we met earlier. You can 
see that this generator is made up of three copies of the Ter-Dragon, but they are not arranged in the usual Ter-Dragon 
way. 

Now check out this variation of the specimen, shown below. It is rendered with splines on the next page. 













interval length 


= V9" 


fractal dimension = 




Triangular grid 
5 segments 

segment values: 
1; 2.-1.-1. 1 


generator 






^ 


S* 


level 4 


(rounded corners) 






-1, 2, 1,-1 
1, 0,-1,-1 
0,-1,-1,-1 
1, 0, 1, 1 


c 


1 






^\ 






level 2 



140 



141 



The V9 triangle grid family includes one of the finest specimens of all: the Snowflake Sweep, featured in Mandelbrot's book: 



Snowflake Sweep 




interval length = V§~ 


fractal dimension = 2.0 




riangular grid 

segments 

;gment values: 
0, 1, 1,-1 

0, 1,-1, 1 

1, 0,-1, 1 

1,-1,-1, 1 
-1,-1,-1,-1 

1, 0, 1,-1 
1, 0,-1, 1 


^ 


c\ 




A>. 


f 


$ 










generator 


level 2 


v> 


level 3 






Notice how it fills the Koch snowflake. 

Earlier I pointed out that Mandelbrot had said 
he // designed ,/ a self-avoiding curve; I suggested that 
the curve could just as easily have been "discovered". 
Well, Mandelbrot's Snowflake Sweep is so amazing 
and beautiful that I can hardly blame him for claiming 
to be its designer. 

By the way, this curve is very flexible. Any 
segment in the generator can have an arbitrary 
flipping in its x value, and the teragons will still be 
self-avoiding. On the next page is a variation in x- 
flippings. 



142 



interval length = V9~ fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



0, 
0, 
1, 
1, 

-1, 
1, 
1, 



1,-1,-1 
1, 1, 1 
0,-1, 1 
■1,-1, 1 
■1, 1,-1 
0, 1,-1 
0, 1, 1 





generator 



level 2 




level 3 



V9 Carpets 

Now I want to show you a series of V9 triangle grid family curves that incorporate segments of length V3, and fractalize to 
fill a tilted rectangle. I call them "V9 Carpets' 7 . 1 have uncovered several of them. Here is a small selection, for your brain- 
filling pleasure. In all cases, the 4 th or 5 th teragons are shown with rounded corners. 





143 



1, 0, 1, 

-1, 1, 1,- 

1, 0, 1, 
1,-2,-1,- 
1. 1. L- 





2,-1,-1 

0, 1, 1 

-1, 0,-1 

0, 1, 1 

1, 0, 1 
0,-1, 1 
1, 0,-1 




2,-1, 1," 

0, 1,-1, 

-1, 0,-1,- 

0, 1, 1,- 

1, 0,-1,- 
0,-1,-1, 
1. 0. 1. 






144 



-1," 

0, 
2, 
0,- 
-1, 
0, 









145 



Unraveled Carpets 



I showed you the following curve early on in the book. This curve seems to be related to the carpets series, except that the 
weaving has come undone. I call it "Unraveled Carpet". 



Unraveled Carpe 



interval length = V9~ fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



-1, 2,-1, 1 
1, 0,-1,-1 
1, 0, 1, 1 
0,-1, 1, 1 
0,-1,-1,-1 
1, 0,-1,-1 
1, 0, 1, 1 





generator 



level 2 




level 4 



Here's a variation on the same generator that makes another unraveled carpet. This one seems a bit more orderly in its 
unraveling. 











interval length = 


w 


fractal dimension = 2.0 




riangular grid 

segments 

;gment values: 
-l s 2, 1, 1 

1, 0,-1,-1 
1, 0, 1, 1 
0,-1,-1, 1 
0,-1, 1,-1 
1, 0,-1,-1 
1, 0, 1, 1 






w 




^ 


f 7 1 




level 4 (rounded corners) 


i 


* 


/ 


w 




h 








generator 




level 2 


/ 



The specimen on the next page has unraveled itself in a strange way - and it is also a self-crosser. 



146 



interval length = V§~ fractal dimension = 2.0 



Triangular grid 

7 segments 

segment values: 

1 

2 

4 
5 
6 
7 



-1, 2 S 1, 1 
1, 0,-1,-1 
0,-1, 1,-1 
1, 0,-1,-1 
1, 0, 1, 1 
0,-1,-1, 1 
1, 0, 1, 1 



V 



2, 



^ 



"tra 



& 



generator 



level 2 




level 4 (rounded corners) 




147 



Where Be Dragons? 

Are there any dragons in this family? In fact there is a whole clan of them. This clan of dragons consist of complexified 3x- 
scaled variations of a V3 specimen we met early on in the book - shown at left. I found three, but I have a suspicion that 
there are many more hiding in the deep V9 sea. 



root 3 



f* 



root 9 variations, rotated 






Each generator in this clan of dragons has five segments. Two of those segments have a length of V3, and the remaining 
three segments are of length 1. As I showed you earlier, squaring each of these lengths and then adding them results in a 
number that determines the fractal dimension. In this case, we get 9. On the next page is a color rendering of the self- 
avoiding curve below. And then I'll show you two others in the clan. 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
5 segments 

segment values: 
1,-2, 1, 1 
1, 1, 1, 1 
0, 1, 1, 1 
0, 1,-1,-1 
1,-1,-1,-1 





£> 




generator 



level 2 



level 5 



148 




149 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
5 segments 

segment values: 
1: 2,-1,-1,-1 
2: 2,-1, 1, 1 
3: 0, 1,-1,-1 
4: 0, 1, 1, 1 
5: -1, 0, 1, 1 




generator 



level 2 



level 6 (rounded corners) 



interval length = V9~ fractal dimension = 2.0 



Triangular grid 
5 segments 




t ^^r^ /vrfcw 









&&£ 



)& 






m 



"N V 



$%? 






WtlS 






150 



This specimen resolves to the same shape as the orderly unraveled carpet I just showed you. 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
5 segments 

segment values: 



-1, 2, 1, 1 
2,-1,-1, 1 
0,-1, 1,-1 
1, 0,-1,-1 
1, 0, 1, 1 





*f- 




generator 



level 2 



level 4 (rounded corners) 



This next specimen is a self-avoider. On the next page I show it in color with rounded corners, on a triangle initiator. 









interval length = V9~ 


fractal dimension = 2.0 


Triangular grid 
5 segments 








\v- 


S"\ s\ Vs 




;gment values: 
1, 0, 1, 1 
1, 0,-1,-1 

1,-2,-1, i r^ 


k 








$$ 


'&£ 


V 


r 7 <^ 


<C IT 


$Mi" 




. ^ \ , 




_r 


> 










generator 




level 2 


level 4 





151 




152 



These two self-avoiders, based on the same generator, are quite similar, but look closely: you can see subtle differences. 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 


9 segments 


segment values 


1 


-1. 1, 1,-1 


2 


-1, 1, 1, 1 


3 


1, 0, 1, 1 


4 


1, 0, 1,-1 


5 


1, 0, 1, 1 


6 


0,-1, 1, 1 


7 


0,-1, 1,-1 


8 


1, 0, 1,-1 


9 


1, 0, 1, 1 




level 3 



generator 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
9 segments 

segment values: 
-1, 1, 1,-1 
-1, 1,-1, 1 
1, 0,-1, 1 
1, 0, 1,-1 
1, 0,-1, 1 
0,-1,-1, 1 
0,-1, 1,-1 
1, 0, 1,-1 
1, 0,-1, 1 




generator 



Here's another self-avoider. I call it "Brainfolds". (It was drawn by the turtle early on in the book). 



Brainfolds 






interval length = V9~ 


fractal dimension = 2.0 


Triangular grid 
5 segments 

seament values: 


w 






level 4 (rounded corners) 


1 


-1, 2,-1, 1 
1, 0,-1,-1 
1, 0, 1, 1 
0,-1, 1, 1 
2,-1, 1,-1 


£* 


1 <s. 

generator 


"> 


level 2 






^^ 



I had assumed that Brainfolds would fractalize to the 
same shape as the specimen at the upper-left of this 
page. My estimation was not quite right: there 
seems to be at least one small difference, shown at 
right: The pink region is a mirror image of the green 
region indicated by the arrow. 





This next curve resolves to a 3x-size Ter-Dragon. Notice that the first segment in the generator has a length of V3, and that 
the rest of the generator consists of two Ter-Dragon generator-like shapes. 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 
1, 1, 1, 1 
1,-1, 1, 1 
-1, 0,-1,-1 
1,-1,-1,-1 
0, 1, 1, 1 
1,-1, 1, 1 
0, 1,-1,-1 





j 




generator 



level 2 



level 3 (rounded corners) 




lJ h&¥ 











^ 








#fe 



>^pc 



£> 



154 



Here is a curve whose horizontal segments have length 1 and whose vertical segments have length V3. Even though it 
lives in the triangular grid, it has 90-degree angles. But that doesn't qualify it as a member of the square grid family! And 
check it out - this is a natural self-avoider. 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
5 segments 

segment values: 



-1, 2,-1, 1 



0, 1,-1 
0, 1, 1 
0,-1,-1 
■2,-1, 1 




generator 



level 2 



level 4 (rounded corners) 




155 



Here are a few rather zig-zaggy specimens: one is a busy dragon-like gridfiller and the other has a dimension of -1.77. 



interval length = V9~ 



fractal dimension = 2.0 



Triangular grid 
9 segments 

segment values: 



-1, 1, 1, 1 

1, 0, 1, 1 

1, 0, 1, 1 

0,-1, 1, 1 

1, 0, 1, 1 

0,-1, 1, 1 i 

1, 0, 1, 1 \ 




level 4 



generator 



interval length = V9~ 



fractal dimension = 1.7712437 



Triangular grid 
7 segments 

segment values: 




level 3 (rounded corners) 



generator 



The remaining specimens of this family that I will show you have dimension -1.89. 



interval length = V9~ 



fractal dimension = 1.8927892 



Triangular grid 
5 segments 

segment values: 




generator 



level 4 (rounded corners) 



interval length = V9~ 



fractal dimension = 1.8927892 



Triangular grid 
5 segments 

segment values: 



1, 0, 1, 1 
-1, 1,-1,-1 

2, 0, 1, 1 
0,-1,-1,-1 
1, 0, 1, 1 



S~L 



generator 




level 4 (rounded corners) 





156 



I call this one "Dolphins" 



Dolphir 



interval length = V9~ 



fractal dimension = 1.8927892 



Triangular grid 
6 segments 

segment values: 



1, 0, 1, 1 

0, 1,-1,-1 

1, 1,-1, 1 
0,-1, 1, 1 
0,-1,-1,-1 
1, 0, 1, 1 






generator 



level 2 



level 3 (rounded corners) 




157 



These last two curves are true gems. They are both based on the same generator shape. This first curve is shown at the 
very beginning of the book, and the second one is shown below. 



interval length = V9~ 



fractal dimension = 1.8927892 



Triangular grid 
6 segments 



interval length = V9~ 



fractal dimension = 1.8927892 




158 



After coming down from seeing the amazing variety of the V9 triangle grid family, anything would seem anti-climactic. 
And indeed, I must report to you that the /10 family has very little to offer the eye and brain. Take a look and see for 
yourself. Why is this? I cannot say for sure, but I believe there must be some mathematically-relevant explanation. 

I'll start with a rather non-descript specimen. It has a generator that looks like the classic Peano generator, but 
with a raised forearm on the right side. The distance from the origin to the elbow of the arm is V9, and the distance to the 
tip of the hand is /10. By taking the Peano generator and adding the waving arm, and some alternate flippings, we get the 
following shape: 



interval length = VTo 



fractal dimension = 2.0 



Square grid 
10 segments 

segment values: 



1, 0, 1, 



0, 

1, 

0, 

-1, 

0, 
1, 
0, 
1, 



10: 0, 



1,-1, 
0, 1, 
1,-1, 
0, 1, 
1,-1, 
0, 1, 
1,-1, 
0, 1, 
1,-1, 







generator 



level 2 




level 3 (rounded corners) 



In an attempt to add some excitement, I will pertile 
this specimen four times. Here it is shown at right. 

Notice the alternating pattern in the 
flippings of the genetic code. I found that alternating 
the flippings helped me to locate several gridfillers 
of this family. The next four specimens use this 
alternating trick. On the following page are three 
specimens. They are all gridfillers; two of them are 
based on a common generator shape. 




159 



interval length = VTo fractal dimension = 2.0 



Square grid 
10 segments 

segment values: 



1 





1, 1 




2 


1 


0,-1 


-1 


3 





1, 1 




4 


1 


0,-1 


-1 


5 





1, 1 




6 


1 


0,-1 


-1 


7 





-1, 1 




3 


-1 


0,-1 


-1 


9 





-1, 1 




1 


0: 1 


0,-1 


-1 



JT J 

r 

JT — ^ — 




generator 



level 2 




level 3 (rounded corners) 



interval length = VTo fractal dimension = 2.0 



Square grid 
10 segments 

segment values: 



1 





1,-1 


-1 


2 


1 


0, 1 




3 





1,-1 


-1 


4 


1 


0, 1 




5 





1,-1 


-1 


6 


1 


0, 1 




7 





-1,-1 


-1 


3 


-1 


0, 1 




9 





-1,-1 


-1 


1 


0: 1 


0, 1 








generator 



level 2 



level 3 (rounded corners) 



interval length = VTo fractal dimension = 2.0 



Square grid 
10 segments 

segment values: 



1 


1 





1 










2 





1 


-1 


-1 






3 


-1 





1 








4 




1 


1 




-1 

1 


-1 


w 




w 


5 


4 




4 


6 





-1 


-1 


-1 








7 


1 






1 


1 
-1 


1 


f 


* 


f 


3 


^ 






9 


1 





1 










1 


0: 


-1 


-1 




, ^ 


r 







generator 



level 2 



level 3 (rounded corners) 



160 



The last two curves I will show of the /10 family is a dragon and a palindrome with dimension -1.806. 



interval length = VTo 



fractal dimension = 2.0 



Square grid 
10 segments 

segment values: 



10: 






generator 




level 2 



level 4 



interval length = VTo 



fractal dimension = 1.80618 



Square grid 
7 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 



1, 0, 1, 

1, 0,-1,- 

0, 1,-1,- 

-1,-1,-1,- 

0, 1,-1,- 

1, 0,-1,- 
1. 0.-1.- 






generator 



level 2 



level 3 (rounded corners) 




161 



It is time to show you another overweight palindrome dragon. Like many of the others we've seen, this member of the 
/12 family has a typical yam-like shape: fat and lumpy in the middle; tapered at the ends. 



interval length = VT1 



fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 



1, 

-1, 

1, 

0, 

1, 

-1, 

-1, 

1, 

0, 

: 1, 

:-l, 

: 1, 




generator 





level 2 



level 3 (rounded corners) 



Given the many ways you can traverse a triangular grid in the interval of /12, we should expect many more palindrome 
dragons. I'll show you four more. These are not at all yam-like. In fact, their boundaries are quite craggy. 



interval length = V~f2 



fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 
-1, 1, 
1, 0, 
1, 0, 
-1, 1, 
1, 0, 
0,-1, 
0,-1, 
1, 0, 
-1, 1, 
10: 1, 0, 
11: 1, 0, 
122-1, 1, 



V 









generator 



level 2 



level 3 



162 



interval length = VT1 fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 






generator 



level 2 



level 4 (rounded corners) 



interval length = V~f2 fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 



\ A 





generator 



level 2 



level 3 (rounded corners) 



interval length = V~f2 fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 

3 

9 



-1 


1 

1 
1 


1 

10: 
11:- 1 
12: 






generator 



level 2 



level 3 



163 



Here is a /12 specimen that includes an abnormally long segment - extending the length of V7, followed by three 
segments of length 1. Who would have ever expected that its 5 th teragon would resemble a bat's cave? 



Bat Cave 










interval length 


= V~f2 fractal dimension = 1.8532568 


Triangular grid 
4 segments 












J^Vl 


segment values: 
1: -1, 3, 1,-1 
2: 1, 0,-1,-1 
3: 1,-1, 1,-1 
4: 1, 0,-1,-1 








XJ 




*5^v 


F \ 






< 




y 


y 


jy\y 


"^ 






1 

generator 






level 2 




level 4 (rounded corners) 




164 



Here are two interesting specimens. The first one is based on a tiling of 12 triangles - illustrated at bottom-left. The second 
one is shown with two kinds of 3-way pertilings - shown at bottom-right. 



interval length = VT1 fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 
1, 0, 1 
-1, 1,-1 
1, 0, 1 
-1, 1,-1 
-1, 0, 1 
-1, 1,-1 
1, 0, 1 
1,-1,-1 
0, 1, 1 
10: 1,-1,-1 
11: 0, 1, 1 
12: 1,-1,-1 




generator 





level 3 



interval length = V~f2 



fractal dimension = 2.0 



Triangular grid 
12 segments 

segment values: 
1, : 
-1, 1 
-1, 1 
1, 
0,-1 
1, 
0,-1 
1, o ; 
-1, 1 
10: 1, 
113-1, 1 
12: 1, 






generator 



level 2 



level 3 (rounded corners) 





165 



Here are a couple of curves based on a common generator - it includes two segments of length V3: 



interval length = Vl2 



fractal dimension = 1.7684565 



Triangular grid 

5 segments 

segment values: 
1: l s 1, 1, 1 
2: -1, 0, 1,-1 
3: 0, 1, 1,-1 
4: 1,-1, 1,-1 
5: 1, 1,-1,-1 






generator 



level 2 



level 3 (rounded corners) 



interval length = VT1 fractal dimension = 1.7684565 



Triangular grid 
5 segments 

segment values: 
1: 1, 1, 1, 1 
2: -1, 0,-1,-1 
3: 0, 1,-1,-1 
4: 1,-1,-1, 1 
5: 1, 1, 1, 1 






generator 



level 2 



level 4 (rounded corners) 




166 



Ancestry 

We have met several families of fractal curves, and we have seen a number of ways in which they relate to each other. In 
the graph below, I show examples from all families up to V12. The prime-numbered families are placed along the top. 
The powers-of-two families (2, 4, 8) are shown at left. Notice that variations of the HH Dragon can be generated within 
each of the power-of-two families. Similarly, any V3 curve can be generated within in the V9 family, since 9 is a multiple of 
3. The V10 family can generate variations of both the >/2 and V5 family curves. And finally, the VI 2 family can generate 
variations of V3 and V4 (triangle grid) curves. 




167 



Now it is time to look at the VI 3 square grid family. I will start 
with a curve I discovered that is a self-avoider analogous to the 
Gosper curve: it requires two kinds of flippings (normal and 
double-flipped), and it roughly corresponds to a regular 
polygonal tiling - in this case, the square. Take a square of 9 
squares, and attach one square on each edge. That is the tiling 
for this fractal curve. Since Mandelbrot referred to space-filling 
curves as "Peano Curves", and also referred to the Gosper 
Curve as "Peano-Gosper", I call this one the "13-Peano- 
Gosper". 





13-Peano-Gosper 



interval length = V~f3 



fractal dimension = 2.0 



Square grid 
13 segments 

segment values: 



0, 

1, 

0, 

-1, 

-1, 

0, 

1, 

0, 

1, 

: 0, 

: 1, 

: 0, 

: 1, 



1,-1, 
0, 1, 
1,-1, 
0,-1, 

0, 1, 

1, 1, 
0,-1, 

1, 1, 
0, 1, 
1,-1, 
0, 1, 
1,-1, 
0, 1, 



4 4 
^ *1 



r 





generator 



level 2 



level 3 



There are several variations of this curve with dimension less than 2. I'll show you two on the next page, followed by a 
filled-in version of the second one. 



168 



interval length = V~13 



fractal dimension = 1.8697408 



0, 1,-1, 



Square grid 
10 segments 

segment values: 

1 

2 

3 

4 

5 

6 

7 

8 



0, I 

-1, 0, 

0, 1 

1, 1 
1, 0, 

0,-l ; 

0,-1 
1, 0, 
10: 1, 0, 




generator 



level 3 



interval length = V~13 



fractal dimension = 1.8697408 



Square grid 
10 segments 

segment values: 



1,-1, 
1, 1, 
0,-1, 

1, 1, 
0, 1, 
1,-1, 

0, 1, 

1, 1, 
1,-1, 
0, 1, 







generator 



level 3 (rounded corners) 




169 



I would like to nominate this as the token Palindrome Dragon of the /13 square grid family: 



interval length = V~f3 fractal dimension = 2.0 



Square grid 
13 segments 

segment values: 



-1, 

0, 

1, 

0, 

1, 

0, 

1, 

0, 

1, 

: 0, 

: 1, 

: 0, 

:-l, 



4 ^1 




generator 



level 2 



level 3 




170 



There is a Triangular Grid VI 3 Family as well as a Square Grid one. Let's check out a few specimens. Here is a curve I 
discovered which is a partial gridfiller. I'll show it with an expanded version of the diagram scheme: 

interval length = VT3 
fractal dimension = 2.0 



Triangular grid 
13 segments 

segment values: 



1 

2 

3 

4 

5 

6 

7 

8 

9: 

10: 

11 

12 

13 



1, 
0, 1 
■1, 

0, 1 
■1, 1 

1, 
1,-1 

■1, 
1,-1 
1, 
■1, 1 
1, 
1,-1 





171 



There are a few curious-looking palindrome dragons in this family: 



interval length = V~f3 



fractal dimension = 2.0 



Triangul 


ar 


grid 




13 segments 




segment values: 




1 


0, 1, 1, 1 




2 


1,-1 








3 


0, 1 






y\ 


4 


-1, 






7\ 


5 


0, 1 






/_ i 


v^ vv. w 


6 


1,-1 






7\a 7 \i / \i 


7 


1,-1 
1,-1 






/ V y X 


8 


V 7 


9 


0, 1 






V 


103-1, 






V 


11: 0, 1 








12: 1,-1 








1 


3: 0, 1 






generator 




level 2 




level 3 



interval length = V~f3 



fractal dimension = 2.0 



Triangular grid 
13 segments 

segment values: 



1 


0, 1 






2 


-i, o 






3 


0, 1 






4 


1,-1 






5 


0, 1 






6 


1,-1 






7 


1,-1 






8 


1,-1 






9 


0, 1 






10: 1,-1 






11: 0, 1 






122-1, 






1 


3: 0, 1 










generator 



level 2 



level 3 



172 



Generalized Gosper Curves Discovered by Fukuda, Shimizu, and Nakamura 

Fractal explorers in Japan devised a search algorithm that finds what they call "generalized 
Gosper curves" (Fukuda, et al [4]). These are plane-filling curves that use the scheme I described 
on page 97. Basically, the Gosper Curve is drawn over a grid of seven triangles arranged in a 
checkerboard fashion. The picture at right shows how the interval length stretches from A to B. 
Each of the seven triangles maps to the larger triangle outlined with dotted lines. 

This ingenious scheme permits the 
search algorithm to find an infinite series of 
generalized Gosper Curves. The diagram at 
right shows how a similar assembly of triangles 
can be used to identify a generalized Gosper 
curve that is a member of the VI 3 triangle grid 
family. Below I show how this curve fits within 
my scheme. Later on I'll show you another one 
of the many curves that these explorers have 
uncovered. 





Fukuda Gosper 13 



interval length = Vl3 fractal dimension = 2.0 



Triangular grid 

13 segments 

segment values: 
-1, 1,-1,- 

0, 1, 1 
1,-1, 1 

1, 0,-1 
-1, 1,-1 

0, 1, 1 

0, 1, 1 

1,-1, 1 

0,-1,-1 
10: 1,-1, 1 
11: 0,-1,-1 
12: 1, 0,-1 
13: 0, 1, 1 





generator 



level 2 




level 3 



173 



One way to express a square number S is to draw a square made up of S smaller squares. Fve shown you fractal curves of 
the V4 and V9 families where square regions are filled. Now we come to the next square number: 16. Below is a curve of 
dimension 2 that is a partial gridfiller, and it is also partially edge self-touching. On the next page are two specimens with 
dimension < 2 that are "trying" to fill a square, and a 2D specimen with 4-fold symmetry. 



interval length = VTB fractal dimension = 2.0 



Square grid 
16 segments 

segment values: 



o.-i 

1, 0, 
i; 0,-1. 
: 0,-1. 
: 1, 0, 

:0, 1 
: 1, 0, 

:0,-l 

: 0,-1 



— w* 



fit 





generator 



level 2 



level 3 




174 



interval length = VTB fractal dimension = 1.9036775 



Square grid 
13 segments 

segment values: 

1, 0, 1 

1, 0, 1 

0, 1,-1 

0, 1, 1 
-1, 0,-1 
-1, 0, 1 

0, 1,-1 

1, 0, 1 
1, 0, 1 

10: 1,-1, 1 
11: 0,-1,-1 
12: 1, 0, 1 
13: 0,-1,-1 






generator 



level 2 



level 3 (rounded corners) 



interval length = VTB fractal dimension = 1.7924813 



Square grid 
10 segments 

segment values: 

0, 1,-1 

1, 0, 1 
1, 0,-1 

-1, 1,-1 

0, 1, 1 

1, 0, 1 
1,-1, 1 
0,-1, 1 
0,-1,-1 

10: 1, 0, 1 






generator 



level 2 



level 3 (rounded corners) 



interval length = VTB fractal dimension = 2.0 



Square grid 
16 segments 

segment values: 



0, 1, 

0,-1,' 

1, 1, 
1,-1 

0, 1 



-1, o,-i 

0, 1, 1 

1, 0, 1 
1, 0,-1 

10: 0, 1,-1 
11: l t 0, 1 
12: 0,-1, 1 
13: 0,-1,-1 
14: 1, 0,-1 
15:0,-1, 1 
16: 0,-1,-1 



A ^ 4 

r r 



generator 





level 3 



175 



The following two generators of the /16 square grid family have only three segments. They do not correspond to 
hexagonal or triangular grid lines, even though they may appear to upon first glance - they are indeed inhabitants of the 
square grid. In both curves, the upward-sloping segments traverse across the diagonal of two squares, thus having 
lengths of V5. The horizontal segments have lengths of 2. 



interval length = VTB 



fractal dimension = 1.9036775 



Square grid 
3 segments 

segment values: 



1, 2, 1,-1 
1,-2, 1, 1 

2, 0, 1, 1 




generator 





level 2 



level 6 (rounded corners) 



interval length = VTB fractal dimension = 1.9036775 



Square grid 
3 segments 

segment values: 
1: 1, 2,-1, 1 
2: 2, 0,-1, 1 
3: 1,-2,-1,-1 



^\ 




generator 



level 2 




level 6 



This curve can be copied four times and placed on a square 
initiator to create the closed curve shown at right. There is a 
vague resemblance to the structure of bronchial tubes. 





176 



Like the /16 square grid family, the /16 triangle grid family has many spacefilling curves that pertile equilateral polygons 
- in this case, triangles. I would like to show you a few. None of these examples are self-avoiders...but when rendered 
with rounded corners, they reveal some unique characteristics. The next four specimens each have a segment of length 2 
that lies horizontally across the middle of the 4x4 triangle that houses the generator. This horizontal segment is 
responsible for extending the curve upward towards the pinnacle - increasingly with each fractal level. 



interval length = VTB 



fractal dimension = 2.0 



Triangular grid 
10 segments 

segment values: 



1, 0, 1 
0, 1,-1 

-1, 0, 1 

0, 1,-1 

2, 0,-1 
0,-2, 1 

1, 0, 1 
-1, 1,-1 

1, 0, 1 
10: 1,-1,-1 



S^\ 





generator 



level 2 



level 3 (rounded corners) 



interval length = VTB 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



2, 0, 1, 1 
0, 1, 1, 1 

-1, 1,-1,-1 
0,-1, 1, 1 

-1, 1,-1,-1 
2, 0,-1, 1 
2,-2, 1,-1 






generator 



level 2 



level 3 (rounded corners) 



177 




178 



interval length = VTB 



fractal dimension = 2.0 



Triangular grid 
7 segments 

segment values: 



2, 0, 1, 1 
-2, 2,-1,-1 
2, 0, 1, 1 
0,-1, 1, 1 
1,-1,-1,-1 
0, 1, 1, 1 
1,-1, 1,- 






generator 



level 2 



level 3 (rounded corners) 



interval length = VTB 



fractal dimension = 1.9036775 



Triangular grid 
8 segments 

segment values: 
0, 1,-1,-1 
1,-1, 1, 1 

0, 1,-1,-1 
-1, 1, 1, 1 

2, 0, 1, 1 
0,-2,-1,-1 

1, 0, 1, 1 





7L^7_ 




generator 



level 2 



level 3 (rounded corners) 



On the next three pages are triangular specimens that I have rendered in color. The last one has the top one-fourth of the 
triangle rotated 180 degrees and enlarged, to its right. 



179 



interval length = VTB 



fractal dimension = 1.8502198 



Triangular 


grid 






11 segments 






segment values: 






1 


0, 1,-1,-1 






2 


2,-1, 1 








3 


0, 1,-1 


-1 






4 


-1, 1,-1 


-1 






5 


-1, 1, 1 




sr> 




6 


1, 0, 1 




\7. 




7 


0,-1,-1 


-1 


V 1 


^ 


8 


1, 0, 1 




V< 


7 


9 


0,-1, 1 




/-. X 




10: 1,-1, 1 




/\ k I s 


\j 


11: 1, 0, 1 




generator 


H w 









level 2 



level 2 (rounded corners) 




180 



interval length = VTB fractal dimension = 2.0 



Triangular grid 
13 segments 

segment values: 



0, 1, 



1,- 

0, 

-1, 

2, 

0,- 

-1, 

0,- 

1,- 

: 0, 

: 1, 

: 0,- 

: 1, 








generator 



level 2 



level 3 (rounded corners) 




181 



interval length = VTB 



fractal dimension = 2.0 



Triangular grid 
13 segments 

segment values: 



0, 

1, 

0, 

1, 

-2, 

0, 

1, 

0, 

1, 

: 0, 

: 1, 

: 0, 

: 1, 



1, 1, 
0,-1, 
1, 1, 
0,-1, 
2,-1, 

0,-1, 
■1, 1, 
0,-1, 

■1,-1, 

■1,-1, 






generator 



level 2 



level 3 (rounded corners) 




182 



Here are some non- triangle specimens with three-way symmetry. These tightly-coiled curves are of the dense variety that 
evade being pulled apart to breathe by way of rounded corners. But they do have interesting chambers. The second 
specimen is rendered with its various chambers colored in a playful manner. 



interval length = VTB 



fractal dimension = 2.0 



Triangular grid 
16 segments 

segment values: 




generator 



level 3 



interval length = VTB 



fractal dimension = 2.0 



Triangular grid 
16 segments 

segment values: 
l 

2 
3 
4 

5 
6 
7 
S 
9 



1, 
0. 

-1. 

-1. 

-1. 
0, 

1. 
1, 

10:0, 

11; 1, 
12:0, 
13; 1, 
14:0, 
15: 1, 
16: 0, 



a. 

i. 

l 

i. 

i,- 

i. 
-l 
-i 
-l. 

o. 

i 
-l 

l. 
-i 
-l. 




level 3 




183 



Vn 



... and beyond 



The number of plane-filling specimens in the V2 family is 2 (I am not counting Cesaro). The number of plane-filling 
specimens in the V3 family (by my estimate) is 10. As we climb the family tree, the number of specimens increases non- 
linearly, making exhaustive search quite an expensive proposition when many segments are involved. Consider the sheer 
number of possible generators if each segment has four possible flippings, and connects any two grid points, where its 
length is less than the interval length. I calculated the number of possible generators having up to 5 segments. Ready? 



2 seg: 16 



3 seg: 13,824 4 seg (triangle): 331,776 



4 seg (square): 1,048,576 



5 seg: 254,803,968 



I have done some exploration of this huge space of possibilities, using both hand-drawn diagrams, and computer search 
algorithms, and have discovered some interesting specimens. Let's look at some of those now, as well as a few gems 
previously introduced by Mandelbrot and others. 

First, let's start with a plane-filling curve that Mandelbrot introduced in his book. It is a member of the VI 7 
square grid family, and it is a partial gridfiller. Mandelbrot pointed out that self-avoiding curves are not only more 
aesthetic; they also make better models of forms found in nature (such as rivers and watershed trees). When a curve is 
vertex self-touching, it "knots off". In this example below, the generator itself has a pinched point. This percolates 
throughout the teragons, in a similar way that I showed you with the self -crossing 7-dragons. Here is Mandelbrot's 
Knotted-off VI 7 curve: 



Mandelbrot's Knotted-off Curve 



interval length = VT7 fractal dimension = 2.0 



Square grid 
17 segments 

segment values: 



0, 1,-1,-1 

0, l, 1, 1 

1, 0,-1,-1 

0, 1,-1,-1 

1, 0, 1, 1 

0, 1, 1, 1 

1, 0, 1, 1 

0,-1.-1.-1 

i, o, i. l 

:0, 1,-1,-1 
: 1, 0, 1, 1 
: 0,-1, 1. 1 
: 0,-1,-1,-1 
:-l, 0, 1, 1 
: 0,-1,-1.-1 
: 1, 0,-1,-1 
: 1, 0, 1. 1 



r 

U — s 

r 
* 





generator 



level 2 



level 3 



184 



Here is another VI 7 curve. It is a self-avoider, and it has a dimension of -1.81. 









interval length = VT7 fractal dimension = 




Square grid 
12 segments 

segment values: 
1: 0, 1,-1,-1 
2: 0, 1,-1,-1 
3: 0, 1, 1, 1 
4: 1, 1,-1,-1 j 
> 
6: 1, 0, 1, 1 
7: 0,-1,-1,-1 
8: 0,-1, 1, 1 
9: -1, 0,-1,-1 
10: 0,-1,-1,-1 
11: 1, 0, 1, 1 
12: 1, 0, 1, 1 


w 


w 


<$k *& 




/ 

f 
f 
generator 


4 
^ 


w 




level 2 level 3 



The V18 Square Grid Family 

I have one specimen to show of this family. It is a 
gridfiller. It is shown at right at level 3, rotated by 45 
degrees. Personally, I find nothing attractive about 
this specimen. It looks like a poorly-made 
gingerbread man. But I am including it in the 
book. . .even boring specimens deserve to be seen. 



interval length = VTs 



fractal dimension = 2.0 



Square grid 
18 segments 

segment values: 



1: 


1. 1 




2: 1 


0,-1 


-1 


3: 


1, 1 




4: -1 


0,-1 


-1 


5l 


1. 1 




8: 1 


0,-1 


-1 


7: 


-1, 1 




8: 1 


0,-1 


-1 


9: 


-1, 1 




10:-1 


0,-1 


-1 


11:0 


-1, 1 




12: 1 


0,-1 


-1 


13: 


1, 1 




14: 1 


0,-1 


-1 


15:0 


1, 1 




16-1 


0,-1 


-1 


17:0 


1, 1 




ia: 1 


0,-1 


1 



f 

^% 




generator 



level 2 (rounded corners) 




185 



The V19 Triangle Grid Family 



Let's look at a few of the fine specimens of the VI 9 triangle grid family. I like to start with dragons, and so here is a 
palindrome dragon with a pinched waist and pinched extremities. It is shown below at level 3 with rounded corners. 



interval length = V~f9 fractal dimension = 2.0 


Triangular grid 
19 segments 




segmenl 

1: -1, 1, 1 
2; 1, 0. 1 


values: 


"t^Jl^cS % 


3: -L, 1, i 
4; 1, 0. 1 
5: 0,-1, 1 
6: L. 0. 1 
7: -1, 1, 1 
8: L 0, 1 
9; 0,-1, I 
10: 1, 0, 1 
11:0,-1, 1 
12: L, 0, 1 
13:-L, 1. 1 
14: L, O, 1 
15:0.-1. 1 


WW $P \ 


^ 3#*$H& 




16; I, 0, 1 
175-1, 1, 1 

IS: 1. 0, 1 
19:-L, 1, 1 


\ i generator level 2 level 2 (rounded corners) 




186 



o 




Close-packing of seven circles results in a roughly- 
hexagonal shape: the basis for the Gosper Curve. If you 
completely surround these seven circles with a new layer of 
circles, the total number of circles is increased to 19, as 
shown at left. This 19-cell hexagonal grid is the basis for 
another one of the wonderful generalized Gosper curves 
discovered by Fukuda, et. al [4]. It is shown below. 



interval length = Vl9 



fractal dimension = 2.0 



Triangular grid 

19 segments 



segment values: 

1: 1. o, 1. 1 
2: 1, 0, 1, 1 
3: 0, 1,-1,-1 
4: 0, 1,-1.-1 
S: -1, 1, 1, 1 
6: -1, 0.-1.-1 
7: -1. 0.-1.-1 
8: 1,-1,-1,-1 
9: 1, 0. 1. 1 
10: 0,-1. 1. 1 
11:-1, 0,-1,-1 
12^1. 1. 1. 1 
13>1. 1. 1. 1 
14: 0. 1,-1.-1 
IS: 1, 0. 1. 1 

Iti: 1, 0, 1, 1 

17: I. 0. 1. 1 

IB: 1, 1, 1, 1 

19: 1,-1,-1,-1 






generator 



level 2 



level 3 



I discovered a curve based on this 19-cell hexagonal theme. Its dimension is less than 2, and so it has lots of open spaces, 
which gives it some artistic breathing room. I call it "Mandala". It is shown in color on the next page. 



Mandalc 



interval length = V~f9 



fractal dimension = 1.8832713 



Triangular grid 
13 segments 

segment values: 



0, 1,-1 
-1, 1, 1 
-1, 1, 1 

0, 1,-1 

1, 0, 1 
1, 0, 1 
1, 0, 1 
0,-1, 1 
0,-2,-1 

10: 1,-1,-1 
11: 0, 1,-1 
12: 0, 1,-1 
13: 1, 0, 1 






generator 



level 2 



level 3 



187 




188 



Remember the Anti-Gosper? Well, I suspect that the following curve has some things in common: it is roughly triangular 
and more tightly-packed than its hexagonal cousin. 



interval length = V~f9 



fractal dimension = 2.0 



Triangular grid 
19 segments 

segment values: 



^ i> 

i. i. 

l, i, 

o, l. 

i,-i.- 
, o, 
.-i.-i.- 



115-1, 

12:0, 
13: 1, 

14: 0, 
15: 1, 
16>1 
17: 1, 
IS: 0, 
19: 1, 



0, 1, 

-l.-l.- 
0. 1. 

-1,-1,- 
Q< l> 
1,-1,- 

0, i, 

1. l. 
-i,-i.- 




generator 





level 2 



level 3 



The V20 Square Grid Family 

There are five fours in twenty. And so I wondered if I could 
build a space-filling curve by replacing the squares in 
Mandelbrot's Quartet with rotated copies of a V4 square grid 
family generator. Well, the Peano Sweep generator appears to do 
the trick: 



4 4 4 



r 



interval length = V20 



fractal dimension = 2.0 



Square grid 
20 segments 

segment values: 



0, 1,-1, 
0, 1,-1, 

-1, o, 1, 

-1, 0,-1. 
0, 1, 1, 
0, 1, 1, 

i. 0,-1. 

0, 1,-1, 

10; 1, 0, 1. 
11: 1, 0, 1. 
12; 0,-1,-1, 
13vl, 0, 1, 
14; 0,-1,-1, 
15: 0-1,-1, 
IS; 1. 0, 1. 
17:0, 1,-1,- 
iS: 1, 0, 1, 
19: 1. 0, 1. 
20; 0,-1,-1, 



i 

f 


4 i 


r 


w 


f 





generator 



level 2 



level 2 (rounded corners) 



189 



Here is a variation that uses a combination of the Peano 
Sweep generator and another four-segment shape that 
fractalizes to a square. It is a shape that would not 
normally stand on its own as a plane-filling curve 
generator. But in the context of the whole arrangement, 
it works perfectly. 



L 



1 




interval length = V20 



fractal dimension = 2.0 



Square grid 
20 segments 



segmenl 
o, 1, 



values: 



10:0, 
11:0, 

12: 1. 
13: 0, 
14: 1, 
15: 1. 
16: 0,- 
17: 1. 
15: 0,- 
19: O.- 
20; 1, 



f 





generator 



level 2 



level 2 (rounded corners) 



The following generator has a knotted-off square, like the yfY7 specimen we saw earlier. 



interval length = V20 



fractal dimension = 2.0 



Square grid 
20 segments 

segment values: 



12: 0,-1,-1,-1 

13; 

14: 



r r 



r 



r^ 





generator 



level 2 



level 2 (rounded corners) 



190 



This curve is rather curious. It is a gridfiller with a bit of asymmetry. 









interval length = V20 fractal dimension = 




Square grid 
20 segments 














&$& &£ iff If Af At 

level 3 




i; 

2: 1 
3; 
4: 1 
S: 
6: -1 
7\ 
3. 1 
9; 
10:-1 
11:0 
12: 1 
13:0 
14: 1 
15: 
16: 1 
17: 
1S;-1 
19: 
20: 1 


I, 1. 1 
0,-1,-1 
-1. 1 1 
0,-1,-1 

1. 1. 1 

0,-1,-1 

1. 1. 1 

0,-1,-1 

1. 1, 1 

0,-1,-1 

1. 1. 1 

0,-1,-1 

-1, 1. 1 

0,-1,-1 

1. 1, 1 

0,-1,-1 

-1. 1. 1 

0,-1,-1 

-1, 1. 1 

0,-1,-1 


i 


^ 
W 


r 


> 


^ 
^ 


f °^^^% 




> 


^ 




f 




i 


^ 
W 






f 


r 




gen< 


srato 


r 






level 2 



The V21 Triangle Grid Family 

Of the V71 triangle grid family, I have found a few fat palindrome dragons. Two of them are shown below. 



interval length = VTI 



fractal dimension = 2.0 



Triangular grid 
21 segments 

segment values: 



13: 1, G, 1, 

14>1, 1. 1, 

15: 1, 0, 1, 

16:-1, 1, 1, 

17: 1. 0. 1. 
16: 0,-1. 

10: 1, 0, 1, 

20-1, 1, 1, 

21: 1, O. 1. 




level 3 



generator 



interval length = VTl 



fractal dimension = 2.0 



Triangular grid 
21 segments 

segment values: 



16: 0. 
17:-1. 
IS: 0, 
10; 1,- 
20: 0. 




generator 



level 2 (rounded corners) 



191 




Since 21 is a triangular number, we can arrange the pertiles in a roughly 
triangular array. Below is a triangular specimen of this family, followed 
by a close cousin with dimension -1.89. On the next page is a color 
rendering with rounded corners. 



interval length = VTI 



fractal dimension = 2.0 



Triangular grid 
21 segments 

segment values: 



S; 0. 1 
6: -1. 1, 
7: 0. 1. 
«: 1. 0. 
9: 0,-1. 
10: 0.-1 
11: l.-l 
12:0. 1 
13:-1. 1. 
14: 1. 0. 
15:0,-1. 
16: l.-l. 
17. 0. 1. 
1*;0, 1, 
19: 1. 
20 0.-1 
21: 1, 0. 






level 2 



level 3 



interval length = VTI 



fractal dimension = 1.8987358 



Triangular grid 




16 segments 




segment values: 




i 


1, 0, 1, 1 




2 


0, 1,-1,-1 




3 


-1, 0, 1, 1 




4 


0, 1,-1.-1 


W 


5 


0, 1. 1. 1 


k 7 


6 


-1, 1, 1, 1 


*\7w 


7 


1, 0, 1, 1 


y~*\ 


S 


0,-1,-1.-1 


7 \ 


9 


1, 0, 1, 1 


/ JL-! 


10: 1,-1, 1, 1 


/ ^a7 


Ui-1,-1,-1,-1 


/ ^04 




^ r^ 


13; 1, 0, 1, 1 


/ 


143-1, 1,-1.-1 


^r 


15: 1, 0, 1, 1 




1 


6; 1,-1,-1,-1 


generator 





level 2 



level 3 



192 




193 



The V25 Square Grid Family 

Now we come to another square number: 25. Of the V25 square grid family, I have only one specimen to show: the 
Quadratic Gosper Curve. It is attributed to F.M Dekking [5], and also Doug McKenna [19]. This is a self-avoiding curve that 
fills a square. 



Quadratic Gosper Curve 



interval length = V25 fractal dimension = 2.0 



Square grid 
25 segments 

segment values: 


W 


w 








2: 1. 0, 1. 1 

3: Q. 1,-1,-1 

4: -1, 0,-1, -1 


j 


■* 


r 


b. 1, 0, 1, 1 
?: 0. 1,-1.-1 

B: -1. O.-l.-l 


f 


W 


^ 




*, 


r 


9: -I. 0. I, 1 
1&;0, 1.-1,-1 
tl: 1. 0. 1. 1 
12: 1. 0. 1, 1 


^ 

4 

W 


^ 


f 


> 


r 


w 


13: 1. 0,-1.-1 
M:0. 1, 1. 1 

15: i 0, i. 1 
16:0.-1. 1, 1 


W 




4 


^ 


175 0.-1. 1, 1 

lfl:-l. 0.-1,-1 
19: 0.-1, 1. 1 
20:0.-1.-1.-1 d 


^ 


r 




"^ 


> 


23:0, 1. 1, 1 

23: 1. 0. 1, 1 
24: 0.-1,-1.-1 
25: 0.-1,-1,-1 


gen 


erat< 


)r 






level 2 



level 3 




The V25 Triangle Grid Family 

The V25 triangle grid family has a whale of a bumpy dragon, shown below. 



interval length = V25 fractal dimension = 2.0 



Triangular grid 


2 5 segments 


segment values 


2: 1,-1, 1. 1 
3: 0. 1, 1. 1 


4: -1. 0. 1, 1 


5: 0, 1, 1, 1 


e ] -i, i, i 


7: 0. 1, 1, 1 4 


8: 1,-1, 1, 1 


*. -1. 0. 1, 1 


10: 1,-1, 1, 1 


11: 0. 1. 1. 1 


15: 1.-]. 1, 1 


133-1. P. ], i 


14: 1,-1. 1, I 


15; o. 1, 1, i 




ir>i, a, i, i 


18: 1,-1, 1. 1 


19: 0, 1, 1, 1 


20: 1,-1, 1, 1 


21: 0. i, ], i 


22i-l, 0. 1. 1 


23:0, 111 


24; 1,-1, 1, 1 

25:0, 1. 1. 1 






generator 



level 2 



level 3 (rounded corners) 



On the next page are three more specimens of this family. The third one is shown on the following page enlarged at level 
3 with rounded corners. 



194 



interval length = V25 fractal dimension = 2.0 



Triangular grid 
2 5 segments 

segment values: 



S Q. 1. 

fc i. " 

10- a .j 
lli-l. " 
12: l 
13: 1 
li: 1 
IS 
1&.-1 
17. 
1&.-1 
IS, 1 

20. C 

21. 1 

22. 
21. 1 
-■■: '■: 
Z5: ] 






generator 



level 2 



level 2 (rounded corners) 



interval length = V25 fractal dimension = 2.0 



Triangular grid 
11 segments 

segment values: 
3, 0, 1 

0, 1, 1 
-1, 0,-1 
-2, 2,-1 

2, 0, 1 
0,-1, 1 

1, 0,-1 
0,-1, 1 
1,-1,-1 

10: 0, 1, 1 
11: 1,-1,-1 






generator 



level 2 



level 4 (rounded corners) 



interval length = V25 fractal dimension = 2.0 



Triangular grid 
11 segments 

segment values: 



0, 3, 1 
2, 0, 1 
0,-2,-1 
1,-1, 1 

0, 1,-1 
-1, 1, 1 

1, 0, 1 
0,-1,-1 
1, 0, 1 

10: 0,-1,-1 
11: 1, 0, 1 






generator 



level 2 



level 3 (rounded corners) 



195 




196 



The V27 Triangle Grid Family 

I want to show you two related specimens of the V27 triangle grid family. They were introduced in Mandelbrot's book, 
and they are variations of the Snowflake Sweep. Now, as we saw earlier, the snowflake sweep is a member of the V9 
family, so why are these specimens V27? The reason is due to the nature of my taxonomy scheme, which requires that all 
generator segments lie between grid points. With a slight variation to my scheme, these curves could be represented in 
the V9 family, by relaxing this requirement. The smallest segments occurring within the interior of the generator would 
fall between the cracks, as it were. We can say that these specimens are closely related to the V9 family, except that they 
have a few small (and clever) genetic mutations that permit extra details to emerge in the crevices. The first specimen is 
one Mandelbrot called "Monkeys Tree". The second is a variant of the Snowflake Sweep, in which the whole generator is 
transformed and takes the place of the fifth segment. This is rendered stylistically on the next page. 



Monkeys Tree 



interval length = V27 fractal dimension = 1.9026998 



Triangular grid 
11 segments 

segment values: 
1: -1, 2, 1,-1 
2: -1, 2,-1, 1 
3: 1, 1, 1, 1 
4: 2,-1,-1, 1 
5: -1, 0,-1, 1 
6: -1, 0, 1,-1 
7: 0,-1,-1,-1 
8: 1,-1,-1,-1 
9: 1,-1, 1, 1 
10: 1, 1,-1,-1 
11: 1, 1, 1, 1 




<^T> 



generator 



i^d 




level 2 



level 3 (rounded corners) 



Mandelbrot Snowflake Sweep #2 



interval length = V27 fractal dimension = 2.0 



Triangular grid 

13 segments 

segment val 



-i, 2, l 

-1, 2. 1 

1. 1- 1 

2,-1, 
-1. 0, 
-1, 0, 

t -l, 

1.-1. 
1> 1, 

10: 0.-1, 
11: 0,-1, 
12: 1, 1, 
13: 1, 1, 




generator 




level 2 




level 3 



197 




198 




This specimen was rendered with loving curves and printed on the hardback cover 
of one of the editions of Mandelbrot's book. It is reproduced at left. 

The two final specimens I want to show you are of the V29 triangle grid and 
V36 square grid families. These both have dimensions less than 2, but they are self- 
avoiding, and so they do not require rounded corners. Their diagrams are shown 
below, and on the next two pages are color renderings. The second one is my 
attempt at filling the Koch Snowflake. Enjoy the last two specimens of this book! 



interval length = V29 



fractal dimension = 1.9118462 



Square grid 
21 segments 

segment values: 

1: O, 1,-1,-1 
2: O, 1, 1, 1 
3: O, 1, 1. 1 
4: 0, 1, 1, 1 
5: -1, 0.-1,-1 
6: O, 1, 1, 1 
7: 1, 0, 1. 1 
6: 1, 0, 1, 1 
9: 1, 0, 1, 1 
10:O, 1,-1,-1 
11: 1, 0, 1, 1 
12:0,-1, 1, 1 
13:0,-1, 1, 1 
1*0,-1. 1, 1 
15:-2,-l. 1,-1 
16:0,-1,-1,-1 
17: 1, 0, 1. 1 
13: 1, 0, 1, 1 
19:0, 1,-1,-1 
20: 1, 0, 1, 1 
21: 1, 0. 1, 1 






generator 



level 2 



level 3 



interval length = V36 fractal dimension = 1.8394415 



Triangular grid 


18 segments 


segment values 


1: 0, 2,-1,-1. 


2: -I, 1,-1.-1 


3: 0, 1, 1, 1 


4: 1, 0,-1,-1 


5: 2, 0, 1, 1 


6: 1, 0,-1.-1 


7: 1,-1, 1, 1 


8: -1, 0, 1, 1 


9: -1, 0, 1. L 


lOs-1, 0, 1, 1 


11: 0,-1,-1,-1 


12: 1, 0,-1,-1 


13: 1,-1, 1, 1 


14: 0,-1,-1,-1 


15:0,-1,-1,-1 


16: 1, 0,-1,-1 


17: 0, 1, 1. 1 


1£: 2, 0, 1, 1 





generator 



level 2 




level 3 



199 




200 




201 



My Brain Fillith Over 



I think that's enough brain-filling for one book. 

I hope you enjoyed going on this expedition of fractal specimens with me. I have enjoyed discovering them, and I 
thoroughly enjoyed building this book. But let's not stop here. There are more fractal curves to discover, and there are 
more ideas, inventions, artworks, and insights about nature, the human mind, and the vast potential of mathematics - 
using the computer as an extension of the human eye and brain. For further adventures, visit me at fractalcurves.com 
where I will be expanding this Fractal Family Tree. 








202 



References 



[0] Abelson, H v and diSessa, A. Turtle Geometry. MIT Press, 1986. 

[I] Bandt, C. and Gummelt, P. Fractal Penrose Tilings I. Construction and matching rules. Aequationes Mathematicae, vol. 53, Numbers 

1-2, Feb. 1997 

[2] Barnsley, M. Fractals Everywhere. Academic Press, 1993. 

[3] Carbajo, V. Fractal artworks published online at: http:/ / www.carbajo.net/ 

[4] Fukuda, M. Shimizu and G. Nakamura, New Gosper Space Filling Curves, Proceedings of the International Conference on 

Computer Graphics and Imaging (CGIM2001) 34-38 . 2001 
[5] Dekking, F. M. Recurrent Sets: a Fractal Formalism. Delft University of Technology, 1982. 
[6] Fiedorowicz, Z. . V4 triangle grid family triangle curve variation, published at: 

http: / / www.math.osu.edu / ~fiedorow / math655 / examples2.html 

[7] Gardner, M. In which "monster curves" force redefinition of the word "Curve". Scientific American. 235. 1976 

[8] Gelbrich, G. Fractal Penrose Tiles II: Tiles with fractal boundary as duals of penrose tiles. Aequationes Mathematicae, vol. 54, 
Numbers 1-2, Aug. 1997 

[9] Hilbert, D. "Uber die stetige Abbildung einer Linie auf ein Flachenstuck", Math. Ann., 1891 (38), pp. 459-460. 

[10] Hutchinson, J. Fractals and Self-Similarity. Indiana University Math. J. 30 (5) 713-747 1981. 

[II] Karzes, T. Tiling Fractal curves published online at: http:/ / karzes.best.vwh.net/ 

[12] Koch, H. "Sur une courbe continue sans tangente, obtenue par une construction geometrique elementaire." Archiv for Matemat., 
Astron. och Fys. 1, 681-702, 1904 

[13] Koch, H. "Une methode geometrique elementaire pour l'etude de certaines questions de la theorie des courbes planes", Acta 
Mathematica, Stockholm, 1906 (30), pp. 145-174. 

[14] Mandelbrot, B. The Fractal Geometry of Nature. W. H. Freeman and Company. 1977 

[15] Mandelbrot, B. The Fractal Geometry of Nature, 1977 (illustrating the quadric Koch Island) 

[16] Mandelbrot, B. The Fractal Geometry of Nature, 1977 (describing the "Quartet") 

203 



[17] McKenna, D. Fractal artworks, available at: http: / / www.mathemaesthetics.com / MathArtPrints.html 

[18] Peano, G. "Sur une courbe, qui remplit toute une aire plane", Mathematische Annalen 36 (1): 157-160. 1890 

[19] Prusinkiewicz, P. and Lindenmayer, A. The Algorithmic Beauty of Plants. Springer, 1990 

[20] Sagan, H. Space-Filling Curves, Springer- Verlag, New York, 1991 

[21] Schraa, W. Range Fractal, published online at: http: / / wolter.home.xs4all.nl / index.html 

[22] Teachout, G. Spacefilling curve designs featured in the web site: http: / / teachoutl .net / village / 




12 




About the Author 

Jeffrey Ventrella is an artist and a software programmer. He writes about artificial life, 
virtual worlds, computational art, and human-computer interfaces. He lives in the San 
Francisco Bay area. 



204